Cleanup Betamax helper to make it more semantic

New helper has better type safety and also doesn't require
the use of vars that you assign inside annoynmous functions
Merge pull request #6 from rweald/more_semantic_betamax

More idiomatic scala use of betamax
Move majority of work into instance method

By moving the real work from the apply method on the Object
to an instance method we make it much easier to test integration
with our library downstream.

With instances of our classes people will be able to use mocks
and dependency injection to ensure they don't hit the real APIs
in test.

Almost perfect backwards API compatibility is maintained by
keeping the apply API around and just delegating to an instance
of the class. The only difference is that the results are now
TwitterResult, FacebookResult, and YouTubeVideoResult which
actually helps to disambiguate between the class that does
work and the results that come back from the API