Call Repository interface instead of implementation

- Replaced all calls to RepositoryImpl with calls to the Repository interface.
- Document the Repository interface

This work is to prepare the work for the Poc6 which I am working on.
Needs to happen eventually. Rather sooner than later to avoid merge conflicts.

**Note:** also planning to do extraction of the Blockchain interface (and rename the ```TrieFacade``` to ```Trie``` and ```Trie``` to ```TrieImpl```) if anybody has pending changes in those classes, please let me know.