Allow the specification of a source URL in a Podfile

Will close https://github.com/CocoaPods/Core/issues/170.
Will close https://github.com/CocoaPods/CocoaPods/issues/2515.
See https://github.com/CocoaPods/Core/compare/source-url?expand=1 for the sister changes in `Core`.

TODOs:
- [x] Add test coverage
- [x] de-duplicate code with `pod repo add`?
- [x] verify robustness of name generation
- [x] verify error reporting
- [x] deprecate/remove specification of repos by name in `Podfile`?

\c @alloy @kylef @fabiopelosin @orta 
Nitpick: The combination of a multiline string and the unless keyword makes this a bit hard to read

```ruby
unless source
  raise Informative, "Unable to add a source with url `#{url}` named " \
     "`#{name}`.\nYou can add it manually via `pod repo add NAME " \
    "#{url}`.\n\n#{output}"
end
```
mitigates this