Export ShakeException type

Without this export it is very difficult to handle exceptions thrown by Shake.  I'm using Shake as a library inside another library, so this is an important issue for me.

This patch does not export the constructor and only provides a utility function to extract the underlying exception, so you're relatively free to change the internals in the future.