Memoize the results of functions to save on api calls.

Prior to this every time a function is called, either directly or from a
variable, it would make another api call. Since fitbit limits you to 150
requests/hour this breaks things pretty quickly.  This adds a decorator
function that will cache the results on some of the function calls.
Added benefit is it runs a lot faster now.