New Yt::Errors module with better messages
Merge branch 'custom-exception'
Add `has_one :id` and URL to resources

This allow resources to be initialized by username, and to retrieve
their ID afterwards. For example:

    resource = Yt::Resource.new url: 'youtube.com/fullscreen'
    resource.id # => 'UCxO1tY8h1AhOz0T4ENwmpow'
Merge branch 'add-has-one-id'
Mark some `has_one` associations as required

- Every account *must* have a user info
- Every video *must* have a details set
- Every resource *must* have an id and a snippet

If these cannot be retrieved from YouTube, an Errors::NoItems is
raised, instead of simply returning nil.
Merge branch 'add-first-to-list'
Removed concept of "scope" from authentication

Although it sounded like a good idea, scopes were only used to
raise an error in case the refresh token of the test user had not
been granted all the scopes required to run the tests.

In general, if someone invokes Yt::Account with existing credentials,
we have to assume that those credentials match the right scope.

The only place left for scopes is when it's up to Yt to redirect the
user to the OAuth page. In that case, scopes still make sense because
they have to be passed to the OAuth page, for the user to approve.
Merge branch 'remove-scopes'