Large scale rebuild of whole library

Rebuild to make underlying code object orientated. Also makes a number
of new decisions regarding API such as a complete move to type hinting,
as opposed to optional hinting. Also everything is now defined through
one method named define instead of Class.define and Interface.define.
Includes build directory

Removes build directory from .gitignore and includes compiled project as
well as minified and gzipped versions.
Allows classes to be auto loaded

Creates a public interface for the AutoLoader class so that class
dependencies can be made during calls to 'define'. When the user calls
'start' (globally), any downstream dependencies will be loaded before
instantiating the target class.
Adds missing files to build

This mainly means AutoLoader files and affects the gulpfile where the
build is specified and all three build output files.
Removes incorrect test regarding auto loading

Test existed that expected an error if an included script did not
contain the 'class' it was expecting. The problem being that we are not
exclusively loading classes and so errors were incorrectly triggered
when loading interfaces.

Perhaps a better solution can be found later but for now, the checking
has been removed.
Starts to block out Reflection API

Just includes barely tested versions of Class and Method reflection
objects and supporting snippets.
Allows inline class requiring

Users can now make a call to 'require' from within a class and trigger
a method within the same class on load.
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.js
	build/classy.min.js
	build/classy.min.js.gz
Ensures script is not auto loaded twice
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.min.js
	build/classy.min.js.gz
Minor fix to stop loading scripts multiple times
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.min.js
	build/classy.min.js.gz
Further fix for loading scripts once only
Ensure interface checking occurs at instantiation

Previously, requiring an interface would likely result in an error as
the interface type object would be referred to in the class definition
process. Now, the implementation of the interface is not required until
the implementing object is instantiated by which time it will be loaded.
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.min.js
	build/classy.min.js.gz
Adds 'mixed' argument or return type

Method argument or return value or properties or events can now specify
their type as mixed which basically means there is no type checking. It
explicitly means that the user should verify the value before making
any assumptions about it.
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.min.js
	build/classy.min.js.gz
Ensures autoloader stack is removed before running

Done to remove a bug which occured when the code run after a stack was
fully loaded made a call to require. This meant that the triggered
stack was run again, potentially infinitely.
Adds interface functionality to type checker

Now, types can be specified as an interface. Any object that has the
method 'conformsTo' and returns true when provided the interface name
can be used as that type.
Merge branch 'rebuild' into reflection

Conflicts:
	build/classy.min.js
	build/classy.min.js.gz