Extends abstract functionality

Abstract classes can now list abstract methods that should be
implemented by inheriting classes. All methods must be implemented
unless the child class is also declared abstract in which case the next
child class must implement all abstract methods in both parents.
Updates format of fatals to match master
Merge branch 'master' into feat-abstract-methods

Conflicts:
	ClassTest.js
	Test/Test.html
Changes to the way abstract methods are declared

Firstly, abstract methods can now be type hinted and extending classes
which are forced to implement the method must match the type signature.

Further changes involve making declarations more closely match that of
interface method declarations in that they must end with brackets;
argument names and numbers can be specified within the brackets.

Abstract methods must now also declare an access level of either public
or protected. Private access is not allowed.