Item is now a simple getter/setter

Item() -> returns all data stored
Item(key) -> returns the value stored for key
Item(key, value) -> return and store value for key

Item('base') contains the logic of Item prototypal inheritance
Item('base').extend('name'); -> create an object heriting from base
Item('name').extend('sub') -> create an object heriting from base.name
Item('name.sub').new() -> create a copy of Item('name.sub') and call it's constructor if any