Move models into Yt::Models (but still work in Yt)

It’s nice to be able to just say Yt::Account, but really account is
a model, so it should be Yt::Models::Account. The solution is to
add the module Models and then auto-include it in the main namespace.
Move access & refresh token into Authentication

They still belong to Account, but in a new Authentication object
that groups them together and make it easier to test and to add
new authentication features (like OAuth)
Allow authentication through code or refresh token
Add method to show URL for account to authenticate
Better specs: global hooks for credentials

An authenticated account is created in a global :before hook so it
can be used from every test that needs it, without having to refresh
the token at each reqeust
Add expected_response to Request.new
Remove Yt::Request.default_params

There is no need for this method, since the default params for
a new request can be set in the initializer
Clearer initializer for Yt::Request

The initializer now only sets instance variables.
Better organization of methods in Request
Better organization of Error classes

One "public" Yt::Error class is left, which corresponds to
Yt::Errors::RequestError, which is raised when a request to
YouTube does not respond as expected.

Yt::Errors::NoItems is raised when the response is successful
but does not contain items and was supposed to (for instance, when
getting the id or the detail set of a resource).

Yt::Errors::MissingAuth is raised when YouTube responds with failed
authentication.

The code previously tried to avoid making a request to YouTube at all
if the authentication was missing, but Annotations do not require
authentication, so that behavior has been changed.
Change behavior for playlist-embedded video URL

When Yt::Resource.new url: ... is given the URL of a video embedded
in a playlist, it should return a VIDEO, not a PLAYLIST, since it’s
actually the page of a video.
Merge branch 'add-authentication'