Adds Trebuchet.reset_current!, consolidate controller trebuchets

If `Trebuchet.current` or `ApplicationController#trebuchet` are called before user authentication, each one will separately memoize an unauthenticated Trebuchet for the duration of the request.  This can lead to unexpected behavior.  This patch consolidates `Trebuchet.current` and `ApplicationController#trebuchet` to refer to the same instance.  This allows Trebuchet to expose a function, `Trebuchet.reset_current!`, that can be called when the authentication status of the request changes.

/cc @josephsofaer @jtai @daveaugustine 
I agree with Gordon that it should be `@current ||= @current_block.call...`, as written the code does not actually memoize `@current`