refactor api for working with Resources

WebFinger resources can simply be treated as URLs with some extra logic
surrounding extracting the host for acct and mailto URLs.  This now
supports all types of URLs, not just email addresses, however if an
email-like identifier is provided, it is treated as an acct URI.  Full
tests for the Resource type have been added as well.

!! This is a breaking change.
simplify api for querying webfingers

Combine GetJRD and GetJRDPart into a single function, now simply named
Lookup.  This takes a string as input, so callers don't need to parse
the resource identifier beforehand.  Also provide a default client, so
now you can do a webfinger lookup with one call:
    webfinger.Lookup("will@willnorris.com", nil)

This includes complete test coverage for the new Lookup methods.

!!! This is a breaking change
add option to allow http lookups and fix AppEngine

By default, all lookups must be over https (per the WebFinger spec).
Add flag on Client to allow for http.  Also fix error checking for
AppEngine.
add support for falling back to WebFist

If normal WebFinger lookup fails, fallback to using the WebFist
protocol.  Clients created using NewClient() will be configured to use
"webfist.org" for WebFist lookups, though this can be configured to use
a different server or disabled entirely.
fix test for JRDURL()

The order of query string parameters is no predictable, so compare each
URL component individually.
add LookupResource() in addition to Lookup()

allow callers to perform a WebFinger lookup for an existing Resource,
rather than just a string identifier.  This allows separating the
parsing and lookup stages.
Merge pull request #6 from willnorris/api

API changes I'm working on