Add test for destroying session effect in templates

After populating the session attribute in engines (via 'session'
keywork) then destroying the session, the (non-destroyed) session object
still remain within engines.
Add app->defined_engines method

There is about a half dozen places within the app code that needs to
loop through the defined engine objects. Add a helper method
(defined_engines) that returns a list of the defined engine objects
for iterating through as needed.
Clear engine session attr within destroy_session

Without explicitly clearing the session from engines, further processing
(typically template logic) could erroneously infer that a session
existed even though it had been explicitly destroyed.