Add primitive type names to name completion

This is necessary because these are treated specially by the parser and are
thus not in the global definition context, from which name completion is
drawn.
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.
vim: highlight chars and infixed functions
vim: automatically adjust tactics and metavars to colorscheme
Merge pull request #317 from david-christiansen/providers

Providers update
Merge pull request #318 from david-christiansen/completion-work

Add primitive type names to name completion
Merge pull request #320 from raichoo/vim

vim: highlight chars and infixed functions
javascript: make FFI work with HOFs
javascript: fix semicolons
Fix totality of updateWith/rebuildEnv in Effects
javascript: handle tailcalls for FFI
javascript: assign HOFs properly
New size change graph builder
Looks at patterns, rather than case tree, and therefore finds it easier to
spot structurally smaller arguments which are more complex.
javascript: handle arrays correctly in FFI
javascript: address fields directly via ['fieldname']
Fix Data.Bits: properly convert to machine-buitin types everywhere.
Fix Codegen: Shr is now called LShr, emit that.
Merge branch 'master' of git://github.com/edwinb/Idris-dev
Merge pull request #322 from raichoo/javascript

javascript: make FFI work with HOFs
Merge pull request #324 from andreas23/master

Fix for Data.Bits
Take care with 'let' in specialiser - avoid duplicating a redex
Let now only reduces if the binding appears at most once in scope during
specialisation