Start rewriting everything.

Gitpan::Github encapsulates github access
Gitpan::Repo encapsulates the concept of a repo
Fix do_with_backoff when it fails

Test our default attributes
Test is_too_many_requests()
Get Gitpan::Repo to compile
Fix Repo->directory

I guess defaults are applied without coercion.
Test Gitpan::Repo->github
Test Gitpan::Repo->git
Break out reading a response into a role.  Prep for overriding Github's network reading.

We're going to build backing off from "too many requests" into our own Network subclass.
Move do_with_backoff into a Role, Network will need it.
Ignore the gitpan-build directory I tend to use on OS X
Network doesn't actually do network calls.  Its in NoRepo.

Monkey patch NoRepo->get_json_to_obj to do an automatic back off and also
report network outages.
Make our own Git class to hold our local git repo methods.

Base it on the more reliable, and CPANable, Git::Repository.
Add methods to create a repo.  Can't really test it

Make passing the owner to exists_on_github optional
Add methods to query and change remotes
CanBackoff has nothing specific to github in it
Add a smart push to github method to git.
Change Gitpan::Github to require a repo.

Each Gitpan::Repo object will have its own Gitpan::Github object,
and its easier if it knows its repository.
Make the AbsDir type coerce from a string.

I thought it would figure it out from Dir.
Turn on type coercion.

Didn't realize it wasn't on by default *headdesk*
Get rid of our custom Dir type and use MX::Path::Class