Public API throws more useful exceptions.

Public API methods throw a variety of exceptions, allowing the client
programmer to take appropriate action if necessary in response to the
exceptions.

A new `io.v.syncbase.exception` package contains these exceptions,
plus an `Exceptions` utility that has a number of overloaded
`chainThrow` methods that used the chained exception pattern, throwing
an appropriate higher-level exception corresponding to each
lower-level error from the Go code.

See included README.md for details of the exceptions.

The exceptions thrown from the API have a message that includes both a
high-level message related to the public API where it was called and a
low-level message from the underlying VError or VException.

Change-Id: I128cafb9c73e4e12909c3de62b3fe1a5ed5e0b13
28 files changed