Add type error for Unauthorized Error

In the CLI we found that we wanted to be able to programmatically
capture this error and refresh the user's access token for them. The
way this was implemented before made this difficult because we would
have been tied down to the particular error string returned. We believe
that the idiomatic way of catching *some* errors in golang is to have an
exported error type -- some of the builtin net and http packages do this.

Let us know if you have any questions or if there's any style guide we should adhere to. 

Thanks!

@XenoPhex and @tjarratt