[rss] Clean up code, fix commands

- Cleaned up code, clarified docstrings and messages
- Tightened up command usage requirements
- Removed support for quoted feed names with spaces, for now
- Added a "clear" option to remove all feeds from a channel
[rss] Now using intervals

The feed checking function is now run using the interval decorator.
Previously it would just run in a loop in the startrss function, and
every time startrss was run again, it would create another loop.

We don't seem to be able to change the interval while it's running, but
the code is a lot simpler this way.
[rss] More cleanup and adjustments to read_feeds

- Move the interval function after both the command functions
- Use feedparser's "link" attribute
- Modify formatting a bit
- Add some debug messages
- Tidy up code
[rss] Allow updating of existing feeds

When adding a feed, if the combination of name and channel already
exists, it will be updated instead of creating a duplicate.
[rss] Minor cleanup of messages, queries, code style
[rss] Fix bugs with feed colours and unicode

Fixed bugs introduced earlier with parsing and displaying feed colours.
Also made colours optional again.

Also made sure to use unicode strings for feed entry updates.
[rss] Added regex for better command parsing

Might be a bit of overkill, but command parsing is now done by regex.
Also took the opportunity to improve command documentation.
[rss] Changed DB table structure

- Merged "rss" and "recent" tables into one table named "rss_feeds"

- Renamed site_name and site_url to feed_*

- Fixed bug in regex checking from previous commit

Previously, the module added a new row to the database for each new
article found, even though it was only ever checking the most recent for
each feed. Now that it only stores the most recent, it makes sense to
keep it right in the feed table.

This obviously won't be able to read from existing databases, unless we
add a check for the old table structure in the checkdb() function.
[rss] Allow enabling/disabling of feeds, add "toggle", remove "clear"

- Added a new "enabled" column in the table.

- Feeds can now be disabled using the toggle command, in which case they
will not fetch new articles.

- The toggle command can take a channel or a feed name or both as
arguments.

- This has also been applied to the "del" command, making the "clear"
command redundant.

- Also, because of the above, feed names have been restricted to
alphanumeric and underscore characters to remove any ambiguity with
channel names.
[rss] Convert old table format to new

If the new format table doesn't exist on setup, create it, check for the
old format table, and add any feeds and articles into the new one.

The old tables can then be dropped, but I've commented this out because
it makes it impossible for
any other module to use a table named "rss" or "recent". I'd suggest
standardizing DB table names in modules to be prepended with the module
name, so this isn't an issue.
Merge pull request #301 from saltire/rss

Overhaul of RSS module