Better support for user agent

Refs #10

We're defaulting the UA to `/btcwire:0.0.1/` (hardcoded right now as I'm not sure how to inspect the current version) and allowing customization using `AddUserAgent`. I've also moved the validation to a new function `validateUserAgent` for re-usability. Also, the validation can be extended to cover reserved symbols: `['/', ':', '(', ')']`.

Added tests with/without comments.