More exceptions

1) Add messages to more exception types.
2) return a `Future.error` instead of throwing exception in git branch.

@devoncarew