Improve Exception Handling in Library

- Create new exception types that support exception wrapping
- Move exceptions to a "error" package
- Fix bug in version check logic

Change-Id: I067f746aaeb828215130ff01297b1af564e06e9f
Signed-off-by: Dave Tucker <djt@redhat.com>