Javascript inheritence with the ability to inject construction call backs and merge two prototype chains