Make the type of ierror more general

Before, ierror could only be used where Idris () was expected. However, it
should be usable in any situation as it halts execution.
Clean up implementation of type providers

The type provider elaboration has been made more readable and the supporting
Idris library has been simplified.
Further simplify of type provider elaboration

Nested "if" and "do" blocks have been eliminated.
Tiny further simplification of type provider elaboration
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.
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