Also doesnt use decode/encode anymore since those methods are more
intended for streams. So this goes to the more standed marshal/unmarshal
of data.
This also adds better error support and will try to give the user
better errors from the api if it can. Or any issues with the bitbucket
service.