Dynamic Init of CurrencyPairs & IOException for getExchangeSymbols()

Realized we need to add IOException to the getExchangeSymbols() interface if we are going to change it to being populated from an api call.  I still think it is worth it to avoid having to do a code change every time an exchange adds/removes an asset type.  In this case Kraken was already behind for Dogecoin and I think they will be adding GBP soon.

The main purpose of this change was to get rid of the awkward static currency/currency pair configuration for Kraken.  Exchange symbols are now initialized lazily via a call to https://api.kraken.com/0/public/AssetPairs.  Handling of currencies has been added to KrakenBasePollingService and KrakenUtils has been removed.

Also, I gave a once over for the tests and demos.