Add play_match function and command line interface for matches.

Future improvements might include listing of available brains, and a way to store game data easily.
I'm (and I think most other users of this codebase will also be) comfortable with python stacktraces, so I'd prefer this:

    def get_brain_from_string(brain_fn_name):
        try:
            return globals()[brain_fn_name]
        except KeyError as e:
            raise CannotFindBrainFn('Couldn\'t find brain function "{}"'.format(brain_fn_name))

or, since it looks like you're not getting much extra from the re-raise, you could just let the KeyError propagate and maybe leave a note that will show up in the stacktrace:

    def get_brain_from_string(brain_fn_name):
        return globals()[brain_fn_name] # Raises KeyError if brain fn by that name isn't loaded

At the very least I'd want to make sure we have the offending brain function name in the printed error message.