Add option to use shlex.split with split_args_with on @botcmd

This is useful for plugin authors who need to accept multiple arguments
but have input that may contain spaces. This will allow the arguments to
be quoted just like on a unix shell.

This is also directly implemented now in the !room_topic and
!room_occupants commands, which prepares them for easy input of HipChat
room names (which may contain spaces).
Let split_args_with take a splitter object for argument parsing
Rename ArgSplitter -> ArgParser
Remove HipChat html support.

HipChat does not support incoming html-im [0] and has only
rudimentary support for HTML if you send it through the HTTP
API. There are however two main drawbacks with this (as documented on
the API page [1] for that call):

* Special HipChat features such as @mentions, emoticons, and image
  previews are NOT supported when using this format.
* There may be a slight delay before messages appear in the room.

Furthermore, the API is subject to pretty strict rate limiting. Personal
access tokens only get 100 requests per 5 minutes [2]. It would be very
trivial to exhaust the available number of API calls, blocking the API
from functioning and preventing further messages from going out.
It would also prevent the MUC management from working, since it's
subject to the same API limits.

With these limitations currently in place, it is my belief that simply
sending the xhtml-im part like with any other XMPP server, letting it
get ignored by HipChat until such a time that they do support it (they
mention it is a wish they have, see the official reaction in the
comments on [0]) is better than making it sort-of-work by intercepting
messages and routing them over to the HTTP API.

[0]: http://help.hipchat.com/forums/138883-suggestions-ideas/suggestions/2974079-support-xhtml-im-send-text-only-notifications-to
[1]: https://www.hipchat.com/docs/apiv2/method/send_room_notification
[2]: https://www.hipchat.com/docs/apiv2/rate_limiting
MUC implementation for HipChat back-end
Remove DeprecationWarning and allow any regular callable
Allow re_botcmd to return all matches in a message

This adds a new parameter, `matchall`, to the `re_botcmd` decorator
which will make Err return all non-overlapping matches of the regex
instead of just returning the first match it finds.
Merge pull request #298 from zoni/hipchat-v2

Hipchat back-end overhaul/MUC implementation
Merge pull request #299 from zoni/re_matchall

Allow re_botcmd to return all matches in a message
Merge pull request #297 from zoni/shlex.split

Add option to use shlex.split with split_args_with on @botcmd
split !status into smaller parts

You should be able to call !status plugins, !status load or
!status gc independently
fixed syntax error on exception
fixed logic where 3to2 would run when running 'python setup.py develop' on python3
updated existing tests to pass
added new !status subcommand tests
re-added and reworked the html-im templates for !status output
corrected a couple of broken tests
as suggest, I've simplified the 3to2 check when running 'setup.py develop' on python3
Various bugs / imperfections spotted by pycharm.
fixes