Add tagged and taggedSum
Add tagged and taggedSum

The `tagged` function allows creation of constructors that are tagged
so `instanceof` will work on instances. Also checks that the correct
number of arguments arguments are given.

The `taggedSum` function allows creation of multiple tagged
constructors at once and gives them a catamorphism.

Warning: using taggedSum's catamorphism currently relies on
enumerating properties on an object in the order that they were
defined. This is not defined according to the ECMAScript
specification. Another solution needs to be used.

puffnfresh/bilby.js