rename ObjectHash to FileHash, decorate it with a new ObjectHash implementation

* FileHash is used to provide a Hash-like interface to PDF objects in an
  IO stream
* ObjectHash implements the same API as FileHash
* It can store PDF objects in memory and delegate to the FileHash for
  objects it doesn't know about
* This means we can change objects in memory without changing the
  source file
implement ObjectHash#save and ObjectHash#to_s
some basic specs for saving PDF files
Reference objects can be sorted
PDF::Reader::Reference's can be sorted