Better encapsulation for Blockchain db

- Move blockchain database to actual Blockchain class
- Change WorldManager.instance to private attribute and use WorldManager.getInstance();
- Add Blockchain.close() 
- Updated Block calculation tests with block which actually has genesis as parent
- Make Blockchain.addBlock() public (especially useful for testing)
- Simplfied Block.getParent() by using Blockchain.getByNumber(blockNr-1)
- Made a start with separating Wallet from Blockchain (dependency should be the other way around)

**NOTE**
There are small changes in a lot of files. 
Better to merge before pushing or this pull-req could result in conflicts
@nicksavers , yes but it is defined as generics , 
why to change the constructor to be longer ?