Add more error information to exceptions

I'm not 100% sure I like how I have this implemented but it provides the key info needed for a little more robust error handling - specifically related to rate limiting.

Originally I was checking if the requested was being rate limited based on how fitbit currently reports it. However, fitbit is changing the API on the 27th to use a standard response code. Since that's so close I just have it checking that. (https://wiki.fitbit.com/display/API/Rate+Limit)

I made one unrelated fix to make a simpler test case. Specifically, I fixed GetUserProfile to correctly use the passed in user id (see commit c682eb8 )