Remove "return" from Monad

Monad has Applicative as a superclass. The methods "pure" and "return" are
supposed to do the same thing. This change does the following:

1. Remove "return" from Monad
2. Remove "return" from all instances of Monad in the standard library
3. Define a compatibility function "return":

return : Monad m => a -> m a
return = pure

This enforces that "return" and "pure" do the same thing.
javascript: added javascript lib package
javascript: add hack to check for undefined
javascript: added experimental JSON datastructure
javascript: added index to JSONArray
javascript: added ++ for JSArray
javascript: indentation
javascript: fix compilation error
Merge pull request #326 from raichoo/javascript

javascript: added javascript lib package
Merge pull request #319 from david-christiansen/remove-return

Remove "return" from Monad
Some unification fixes