docs: def decorate(self, function_or_name):
          '''Decorate a function to time the execution
  
          The method can be called with or without a name. If no name is given
          the function defaults to the name of the function.
  
          :keyword function_or_name: The name to post to or the function to wrap
  
          >>> from statsd import Timer
          >>> timer = Timer('application_name')
          >>>
          >>> @timer.decorate
          ... def some_function():
          ...     # resulting timer name: application_name.some_function
          ...     pass
          >>>
          >>> @timer.decorate('my_timer')
          ... def some_other_function():
          ...     # resulting timer name: application_name.my_timer
          ...     pass
  
          '''
          if callable(function_or_name):
              return self._decorate(function_or_name.__name__, function_or_name)
          else:
              return partial(self._decorate, function_or_name)