Fix for FloatObject error with Decimal context
Bugfix: _alg34 and _alg35 are expecting ByteStringObject, not str as id.._entry argument.
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()
respect destination syntax of table 8.2 in PDF 1.6 specs + sublist bookmarks
cleaner and more integrated fix
respect destination syntax of table 8.2 in PDF 1.6 specs + support multi-level bookmarks