Check for near duplicates on all vertices in the graph

- Refactor tests for CrawlHash
- Also fixes int long problem of the hashes
Get the distance between two hashes
Added resetInstance-method to Singleton and fixes some bugs

Fixes threshold assignment bug fix

Prevent duplicate default features
Tests for the redundant whitespace stripper
Added getter for features
Tests for Broder's near duplicate detection
Implementation of Broder's ndd
Compatibility fixes for crawlhash and broder ndd
Add tests for to big feature sizes
Improvements made to Singleton, Exception, featureSizeType
Implementation of the abstract HashGenerators

Refactores existing code to use new hashGenerators

Added tests for HashGenerators
Add vertex only if none of the vertices in the sfg is a near-duplicate of that vertex

Check if the new vertex is not equals (is not a near duplicate) to any
of the vertices in the current state-flow-graph, before inserting the
vertex in the graph.
Add the hash array of each vertex to the result.json
Inverted the distance function of broder

It returns 0 if both sets are equals and 1 if both are completely
different and values in between for the corresponding amount of
difference.
Used crawljax-formatter for duplicate detection package
Refactoring and comments added to NearDuplicateDetection
Added precondition checks for Broder and crawlhash

Additional refactoring of NDD's
Added new exception-type: FeatureException
Replaced Guice injection with Guice provider
Added CrawljaxConfiguration-check for the features
Replaces the primitive int[] datatype of hashes/fingerprints with a dedicated Fingerprint-object