* added reading from stdin if no paths are provided * using streams to encapsulate common behaviour in print_from_stream
* Added file open error handling, by catching an error. * Added better streamUntilDelimiter error handling. You can try, but you can't catch. * Use ArrayList's writer to dynamically allocate space needed to read a line.