Added K2Exception super-class.

Attempting a pull request with something simple... the base exception class for K2.
Sounds good.
2) Perhaps a method indicating whether the exception is "transient" in nature, and another that provides a recommended retry interval/limit.
3) I'm not a big fan of error codes, but I guess it would make sense to have some sort of standardized error classification across implementations; might help make log entries more concise. Speaking of which, should logging be internationalized?