Adding a generalize UserProfile that contains a User and their UserRecents

This is useful in the app since the loader only delivers one object, so to load both at once we use this
Add support for getting the error string returned by the API if an error occurs

This is really important for determining if the app's been rate limited for too many requests so it knows to wait for a bit.