More issues with scope and order of execution

Previously set up and tear down functions were running in an incorrect order.

This PR does the following:

* Suites no longer pass setup and tear down functions to children - they are instead just executed by the children
* AbstractTest::setParent now passes the parent scope to the child
* Tests now run setup functions starting at the top most parent down to the child
* Tests now run tear down functions starting at the test and working to the top most parent
* Scope behaviors no longer exist, they were a smelly hack
* The ArrayObject hack has been removed - this was only a problem with the previous faulty order of execution

I think we should be safe just tagging this as 1.5.1 - Scope behaviors can forever be pinned to only 1.5.0.