Print the load path when debugging source defining.
Check for local-only mode before offline sources when updating.
Name sources firstly by local path, not URI, speccing out init.
Remove unused Source#uri_matches?.
Rework Source.discover_uri_and_type logic into Source#type.
Add ImplicitSource, to handle pathless sources separately.
Some more details in Source#inspect.
Return the correct Source.new args when building remote fixture repos.
Source#present? is just path existence now.

Now that sources are identified by path, whether they're cloned or
not doesn't really affect whether they're present.

This means there's no need to filter by presence in .present -- the
paths have to be present because the glob found them.

Also update the .present / #present? specs to mirror the by-path design.
Update Source.for_path to accept a local path.
Rework duplication checking specs, updating the messages a bit.
Update remaining Source specs for path identity.
Let's not even have Source#remove!.

It's not exposed on the commandline or used outside the specs. Let's
avoid the prospect of a method that could cause data loss by just not
having it at all -- source removal is already manual (by just deleting
the dir in ~/.babushka/sources).
Update Source.for_remote to correctly supply the URI.

Also tightened the specs; they were incorrectly passing.
Don't auto-populate uri: treat sources as local unless it's supplied.
No need for public/private distinction. Use just local/remote.

A source is remote if it has a uri, otherwise it's local.

The public/private distinction was only present in order to only
report runs from public sources to the community db, but that's since
been removed.
Add Source#repo?, which is true for sources at the root of a git repo.
Assign path, name, uri outside #initialize so they can be stubbed.
Override ImplicitSource#present?, since it has no path to check.
Only recognise sources at the root of a repo as remote.