fix(emacs/lean-company): handle singleton candidate case

If we have a singleton auto-complete candidate (e.g. proof_irrel) and it
does not matched with input prefix (e.g. foo), we add the input
prefix (foo) as an extra candidate to prevent the
candidate (proof_irrel) from being automatically selected and completed.
feat(library/definition_cache): store the hashcode of direct dependencies

Actually we store the has code of their types.
feat(library): add environment fingerprint
feat(*): use environment fingerprint to detect when the cache cannot be used because the configuration changed, closes #75

We are not taking into the account the options object yet.