Fix issue #291 TAP output type is broken in 2.0rc3

The success and failure format strings were bypassed in commit 88f7850.

Now, if the following two tests are run with TAP output, we will get the
expected ok/not ok formats.

$ bin/busted -o TAP spec/cl_spec.lua
1..1
ok 1 - Tests the busted command-line options

$ bin/busted -o TAP spec/cl_two_failures.lua
1..2
not ok 1 - Runs 2 failing tests is failing test 2
(details omitted)
not ok 2 - Runs 2 failing tests is failing test 1
(details omitted)
Merge pull request #298 from stevenyvr987/fix_output

Fix issue #291 TAP output type is broken in 2.0rc3
Remove unnecessary publish test foo
Fix after_each execution order

Execution order of after_each was not quite right. The order should be
from the inner most block outward. However, the execution was running
the inner most block first followed by the outter most block going
inward.
Fix traceback issue #286

The base output handler was not saving the trace info when it was
notified that an error/failure occurred. The error/failure handler needs
to save the trace information, otherwise the trace information of the
test call site will be used. Furthermore, we do not need to pass in
trace information for test end messages, since the trace information is
already present in the context element at creation. The output handler
formatter just needs to prioritize the passed in debug information over
the context element's trace information since the passed in debug
information will provide more precise location information.
Distinguish between test errors and test failures

A test error occurs when an error is thrown or an assert fails outside
of the test. While test failures only occur when an assert fails inside
a test.

Call setfenv on 'assert' to replace 'error' with 'fail', such that
'fail' throws a special failure table instead of a string. Hence,
assertion failures will throw a failure table and are distinct from
errors. Additionally, the failure table contains the same error string
that would have been thrown with 'error'.
Enable/Fix failing tests in cl_spec.lua

Tests in cl_spec.lua were not being executed because they were nested
inside an 'it' block. Tests need to be in a 'describe' block in order to
execute, otherwise they are silently disabled. Nesting an 'it' block
inside another 'it' block should probably be an error. After enabling the
tests, many of the tests were failing.

Tags were not being filtered correctly. Instead of running tests with
one or more tags listed in the --tags option, tests were being excluded
if any of the listed tags were not present.

Need to incorporate pull request #293 in order to fix the compile fail
test. This also addresses issue #273.

According to the tests, the return code for busted should be the number
of errors/failures. However, the return code needs to saturate at 255
since it can only occupy 8-bits.
Support 'pending' inside an 'it' block

When 'pending' is called from an 'it' block, the rest of the test should
be skipped and the test should be flagged as pending. This can be
acheived by throwing a 'pending' table when 'pending' is called from an
'it' block, then publishing a 'pending' message when the 'pending' table
is caught. This causes the remainder of the test to be skipped and the
output handler to be notified that the current test is 'pending'. Also,
make sure the --suppress-pending option is honored.
Support spec/test aliases for it

Add 'spec' and 'test' aliases for 'it' blocks.
Refactor descriptor executor registration

Currently a debug trace is saved for registered descriptors that do not
match 'file'. However, since the 'file' executor is only called by the
test file loader directly, via busted.executors, before any files are run,
it is sufficient to check that the current context does not have a
parent instead of checking that the descriptor is not 'file'.
Remove file function from environment
Error when unsupported functions called from test

Calling randomize/describe/it/setup/before_each/after_each/teardown
functions from inside an 'it' block is not valid, so throw an error when
any of these functions are called inside an 'it'. In addition, pending
is not valid inside a 'finally' block. Ensure that the error string
reflects the error level of the caller.
Unregister functions inside support functions

Calling any of the busted registered functions from a support function
is not valid, so throw an error if they are called from setup/teardown
or before_each/after_each.
Add commandline option to specify a random seed
Add support for setup/teardown in file context
Add support for randomize in file context
Add commandline flag to force randomization
Refactor format of error descriptions

Format error descriptions to be the same as failure descriptions
whenever possible. The only time this is not possible is when trace
information is not present for the error. In such a case just output
error description without using any trace information.
Skip tests if setup fails

If setup fails, then do not run any tests in the current context block.
Skip test if before_each fails

Do not run current test if before_each fails. In addition, a failure in
before_each or after_each should cause the current test to also fail.
When this happens, add to error message that before_each and/or
after_each failed. When a before_each fails, stop running before_each's
in child context blocks, and run after_each's starting from the last
executed context block.