Auth: check here whether we're doing an anonymous lookup

Move the logic out of the other modules to where it belongs: the Auth
class.
Smbclient: prepare for future specification of the domain

Currently a no-op, but in the future we might use this to pass on domain
info to smbclient.
Auth: restructure class to make control flow clearer
Cache: password also contributes to filename

Filename is unique for function, URI, username and password.
Include password here to avoid decode errors when someone logs in with a
valid username and wrong password. If the password would not contribute
to the filename, we would try to open the existing cache file and fail
to decode it.
Directory: fix typo, forgot parentheses
Cache: don't specify function as string, but as proper Callable

This will let us also cache the responses from non-static methods.
Cache: split in base class and actual implementors

Create a base Cache class that does the work of serializing function
output, calling writers, calling readers, and unserializing the output.
Use this class as the base layer for extended classes: a Null class that
does nothing much (for when caching is disabled), and a Filesystem class
that caches to a certain directory.
Cache and URI: add tests
Travis CI: add jobfile for automated testing