Fix for FloatObject error with Decimal context
Bugfix: _alg34 and _alg35 are expecting ByteStringObject, not str as id.._entry argument.
Added support for constructing PdfFileReader object with string of PDF file path. Previously a file/stream instance of the PDF was required; now one is created within the constructor to provide this functionality.
In reading a DictionaryObject, a \r character was assumed to be followed by a \n character, and the latter was read over if a \r was found. However, this is not always the case. The character after the \r is now checked of it is actually \n, and if not, then the stream is seeked backwards one byte to compensate for the erroneous read.
Correcting syntax error from last commit upon notification by github user rippedathlete.
Don't assume that strings starting with a BOM are valid UTF-16.

Move the logic to catch invalid encoding outside the attempt
at UTF-16 decoding to catch byte arrays that start with a BOM.
Implementation of LZWDecode filter
improved error handling for PDF files with truncated streams
Defined 'PyPDF2.__version__'. 'PyPDF2/__init__.py' and 'setup.py' were modified to handle the new file 'PyPDF2/_version.py'. The official version number has been set to '1.9.0'
Merge branch 'master' of https://github.com/knowah/PyPDF2
Corrected version number.
Merge remote-tracking branch 'upstream/master'
Removed duplicate `Destination` class

I was experimenting with `PdfFileMerger` and when I tried to
write the data to a file the following exception was raised:

    Traceback (most recent call last):
      File "pypdf2/PyPDF2/merger.py", line 194, in write
        self._write_bookmarks()
      File "pypdf2/PyPDF2/merger.py", line 280, in _write_bookmarks
        self._write_bookmarks(b, last_added)
      File "pypdf2/PyPDF2/merger.py", line 292, in _write_bookmarks
        last_added = self.output.addBookmarkDestination(b, parent)
      File "pypdf2/PyPDF2/pdf.py", line 442, in addBookmarkDestination
        parent.addChild(destRef, self)
    AttributeError: 'Destination' object has no attribute 'addChild'

After debugging this for a while I noticed that there are two
different `Destination` classes in PyPDF2 defined in the following
modules: `PyPDF2.generic` and `PyPDF2.pdf`. The difference between
them is that the one defined in `generic` module inherits from
`TreeObject` and has a few extra methods (`getDestArray` and
`writeToStream`)  whereas the one defined in `pdf` modules inherits
from `DictionaryObject`.

The `addBookmarkDestination` method expects that `parent` has
`addChild` method, which in turn is defined in `TreeObject` class.
Thus, in order to fix this issue, I removed `Destination` class
defined in `PyPDF2.pdf` module.
Merge branch 'master' of https://github.com/cecilkorik/PyPDF2 into cecilkorik-master
Merge branch 'master' of https://github.com/adammorris/PyPDF2 into adammorris-master
Bug fixes and other changes from users.
Merge pull request #7 from josephw/master

Don't assume that strings starting with a BOM are valid UTF-16.
respect destination syntax of table 8.2 in PDF 1.6 specs
respect destination syntax of table 8.2 in PDF 1.6 specs (good one)
Merge pull request #5 from martijnthe/master

Fixes encrypt()