Added unit tests, license, made extend argument optional, and mixin now takes multiple arguments.