Added K2Exception super-class.

Attempting a pull request with something simple... the base exception class for K2.
Let's chat on Monday about plans for addressing

1) Internationalized error messages.
2) A retriable inidicator (i.e. might something different happen if you retried this)
3) And maybe some kind of numeric / enum based error code system. I'm not sure whether this should be just done by types, or if there is value in having an both the Exception subclass and additionally an error code.  Also I'm wondering if there may be value in having error codes that are the same across implementations.