Added templates, made language more natual

* Language is now more natural (Ex: "It looks like the morning of
    2/28 will be CLOUDY with a chance of RAIN")
* Fixed grammer problem ('a light wind' => 'slightly windy' etc)
* Removed blank conditions if they don't apply
* In addition to using "for ..." to specify a location, the user can
    now use "in ..." as well (Ex: "What is the weather like in Dallas,
    Texas?)
Combined lib/web.py + lib/spell.py. Added file tracking to Pluggable

In order to make mocking easier (and it just made more sense), I merged
`lib/web.py` into `lib/spell.py`. The new class is now `BaseSpell`
(instead of `spell`)

The testing framework (see next commit) needs to know the directory that
the class belongs to so that it can find the `test_data` directory so
that the tests can be ran off-line. I was having a problem where file
names kept getting screwed up so they are now being cached inside of the
`__metaclass__`.
Implemented testing framework (helper wrapper around unittest)

lib/test.py
=============

    * `WebMock` - A mock replacement for `lib.spell.BaseSpell.fetch`
    (previously lib.web) with plugins to build an internal database of
    URLs and cached responses (so test can be run offline)
    * `WebCapture` - Also a mock replacement for
    `lib.spell.BaseSpell.fetch` that captures the input parameters and
    result of the `fetch()` function. The "real" `fetch()` is called and
    the result is written to a temporary file. This class is used to
    make it easier to build up tests

test.py
======

    * A simple test runner. Should eventually be integrated into
    `troz.py`.

troz.py
=======

    * Currently `WebCapture` is running all the time. Should should be
    made into a command line argument.
Added tests for spells