Fix deserialization of Association

It returned the 'secret' field, which should be str, as bytes.
Refactor Yadis discovery, fix UnicodeErrors

Use clearer fallback mechanism on "undecodable" content which resorts
to decoding with non-strict ("replace") errors if all else fails. This
means broken content will be passed through, but it should fail on
parsing not decoding.
Cleanup code

Organize imports, refactor `_discover` wrapper method for a clearer
API, etc.