Implement support for excluding tests based on tags

This patch introduces a new command-line option, ‘--exclude-tags’,
which allows to user to skip any tests that have the given tags.
Syntactically the option is the same as ‘--tags’, but semantically it
is the exact opposite.  There are situations where the user will not
want to run every test.  For example, if certain tests are
time-consuming or use a lot of resources then the user may want Busted
to ignore those tests.

It is an error for the user to use the same tag name in both ‘--tags’
and ‘--exclude-tags’.  We treat this as an error under the assumption
that the user made mistake when invoking Busted.  Logically it makes
no sense to tell Busted to include and exclude the same tests at the
same time.

This patch resolves #193.

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Improve the tests for ‘--exclude-tags’ to clarify its precedence

This patch introduces a separate collection of tests for running
Busted with ‘--tags’ and ‘--exclude-tags’ at the same time.  It also
adds multiple tags to one test so that we can demonstrate that
‘--exclude-tags’ always takes precedence.  For example, consider the
following test:

    it("tests database creation #database #longtime", function ()
        -- ...
    end)

It is reasonable for the user to want to run all tests tagged with
‘#database’ but exclude those tagged with ‘#longtime’ so as to skip
tests that would eat up a lot of time and resources.  In this
situation the command

    busted --tags="database" --exclude-tags="longtime"

will prevent Busted from running the example test.  The changes to the
tests in this patch help clarify that behavior.

Note well that we do not treat this situation as an error.  There are
legitimate situations where a user may use ‘--exclude-tags’ and
‘--tags’ to refer to different tags which happen to match the same
test, e.g. the example above.  However, we still consider it an error
for the same literal tag to appear with both options, e.g.

    busted --tags=database --exclude-tags=database

and the test suite checks for this user error.

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Mention the precedence of --exclude-tags in the help output

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Merge pull request #194 from ejmr/exclude-tags

Implement support for excluding tests based on tags