Improve fingerprinting of documents

Fixes two issues:
- #4456 : The first 100 bytes are often not unique as they can be
filled with standard PDF headers - so we use the first 200 KB instead.
(This may be overkill)
- Some documents we encountered have invalid xref ids, which were
always coming out as ‘0000000000000000’ - so we detect that and use the
MD5 instead.

Note: This does change the fingerprint for all previous documents, so settings etc would be lost. Maybe they should be migrated or is that acceptable?
Nit: please adjust the indentation of this line. You can choose to either indent with two spaces, or to line up the first `\x00` on each line:
```javaScript
var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' +
                        '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
```
or:
```javaScript
var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' +
  '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
```