Refactoring

Making overall improvements.

ApiKey: now store the key internally as a byte array.
ApiKey: adding a public constructor.
ApiKey: improving parsing algorithms.
KeyRing: adding a constructor overload that takes a parameter array of
type ApiKey.
NMAClient: improving logic to determines the API usage.
NMAClient: adding an event that triggers whenever the current API usage
changes.
Notification: adding methods to make sending notifications slightly more
straightforward.