Add hasktags-generated files to .gitignore
Add cabal sandbox files to .gitignore

Updated patters in .gitignore to reflect the fact that I'm now
using the new cabal sandbox functionality rather than cabal-dev.
Preliminary work adding type declarations

Add basic type declarations to grammar these are Haskell-style:
    foo :: Type1 -> Type2
Type names start with capital letters.

Created a new class, Funk.Module.Module which stores a mapping of
names to declarations and definitions. Funk.Renamer has a new
function, collect, which collects all the equations for a function
together with it's declaration (type).

There is a lot more work to be done here: Type signatures are
not checked (or used in any way) and code generation is only done
for the first equation of each function. Also, there are some
tests for the new functionality but more are needed.

This commit is also probably a bit of a mess, since it is a fairly
substantial change that was done over the course of several weeks,
whenever I could find the time to work away at it.