Refactor BitcoinOptions credentials

This commit constitutes a major refactor of BitcoinOptions,
mainly the part representing user credentials and mining access.
Changes include moving credentials into a separate class,
changing getters and setters to reflect that and the way
the NetworkState objects are created based on BitcoinOptions contents.
Unit tests were also properly fixed by implementing equals()
in both BitcoinOptions and the newly created Credential class.