Changes Base object so it uses defineProperties

Rather then extending the properties that get passed in, it now
will use define properties. Changed the tests so it also uses this
way of defining the properties.

One continuing issue here is properties that are supposed to be
function.