PeerGroup improvements:

1) Don't hold the PeerGroup lock across DNS discovery, otherwise the API is high latency in this period of startup. Fixes issue in Lighthouse where the UI would not appear until DNS resolution had completed.

2) Don't backoff peers that failed due to a first-time connection error.

3) If an IPv6 peer fails to connect due to a NoRouteToHostException, don't try any more IPv6 peers in future.
Add/Remove wallets to the connected peers as they are added/removed
to/from the PeerGroup
Add javadoc comment for `VersionedChecksummedBytes.toString()`.
Overload HD Key deserialization methods with single-argument versions that use a null parent.
Add missing JavaDocs for ExchangeRate.
Fix one unexpected case of fiatToCoin overflow and add tests.
Added check to determine if the DB connection has been closed. If yes, then get a new connection.
Sort keys by age when printing them. Also fix a generics warning.
VarInt patch by "bake3978", taken from https://code.google.com/p/bitcoinj/issues/detail?id=582

Deleted unnecessary codes; long val; ... val = first; ... this.value = val; -> this.value = first;
ExamplePaymentChannelClient should not send PeerGroup to the extension, since it uses WalletAppKit.
Replace two occurences of pom versions with ${project.version}. It makes incrementing the version a little bit less painful.
ExamplePaymentChannelClient should not send PeerGroup to the extension, since it uses WalletAppKit.
Improve Coin range check to cope with Long.MIN_VALUE correctly
When deserializing wallet extensions, lock order is now wallet and then extension.
When deserializing client payment channel state, if there was an existing close transaction, it was deserialized from wrong data.
Merge remote-tracking branch 'upstream/master' into strawpay-master

* upstream/master:
  Improve Coin range check to cope with Long.MIN_VALUE correctly
  ExamplePaymentChannelClient should not send PeerGroup to the extension, since it uses WalletAppKit.
  Replace two occurences of pom versions with ${project.version}. It makes incrementing the version a little bit less painful.
  VarInt patch by "bake3978", taken from https://code.google.com/p/bitcoinj/issues/detail?id=582
Merge remote-tracking branch 'strawpay/lock-order-error' into strawpay-master

* strawpay/lock-order-error:
  When deserializing wallet extensions, lock order is now wallet and then extension.
Merge remote-tracking branch 'strawpay/payment-channel-deserialize' into strawpay-master

* strawpay/payment-channel-deserialize:
  When deserializing client payment channel state, if there was an existing close transaction, it was deserialized from wrong data.