Misc Bugfixes and more tests

Changes to Endpoint:
  Endpoint hasRead now checks IOHandle.hasRead() OR !buffer.empty()
  (instead of AND)

  Endpoints now refresh their buffer upon construction
  (populates the buffer so first call to doRead() returns a value)

  Endpoints now ensure the underlying IOHandle hasRead before reading
  (instead of repeatedly placing an empty string in the buffer after EOF)

  Passing tests for reading from file with:
    - FileHandle
    - Endpoint (w/ Scalar and Container Buffers...both ST and MT )

  Note/TODO: LineBasedHandles seem to read the entire file in one go.
             Instead of line by line, as their name would imply