renamed extend to inherit

    inherit will be used to create new models with modified prototype,
    extend will be used to modify the existing model
extend function

        delegates to utils.extend to modified the prototype of
    the model, this allow for plugin style behaviour such as,
    Model.extend({method: fn}); without using an assignment
setup global namespace _

        The global namespace being used is _, in setting this we check
    for an existing instance of _ on the global object and set that to
    the _ property of our new object, calling noConfilct;
set local variable _

        _ point to window._ within the IIFE, the Model and Interface
    assignments now also include the _ variable.
inherit added to Model class.

        inherit method is now added to all inherited Models,
        like extend.// TODO find a cleaner way of doing this
removed window.Model assignment.

        unnecessary now as global _ holds all Objects
IIFE is now more readable
Collection started
        Collection takes an object or array of object, the object can be an
    instance of Model or a descendant, or a plain javascript Object.
    the latter will be turned into Models of the type that is specified in
    the Collections prototype (default is Model).
extend and inherit added to collection constructor
_._ set to original window._ not window._.noConflict();
interface check added to models
methods added to collection.

    first, last & models get methods added to collection.
    json method added to collection and model