Use correct type signatures for FFI decls (#257)

When compiling a pattern binding, instead of assuming the type signature
directly before it is the associated one, Fay now looks through all the
type signatures in the module and chooses the correct one based on the
name.

Still todo: Currently calls `error` if there is more than one type
signature for a given name. How should this be handled?
Use `unname` instead of reimplementing it
More complete test for FFI typesigs
Desugar: adding FFI type signatures on toplevel

* Add a desugar step which copies the type signature for toplevel FFI
  declarations to an explicit one in the RHS expression.
* Remove (now unnecessary) code from compileDecls and compileDecl

Still todo:
* Adding FFI type signatures in let/where bindings
* Find out why StrictWrapper test is broken. Seems to be ignoring the
  last statement in the do block.
Add desugaring for FFI type signatures in Binds

refs #257 #376
* add type signatures to FFI expressions in let/where bindings during
  desugar step
* Fix DesugarFFI test (and uncomment FFI calls in let/where binds)
Remove unnecessary argument to compileDecl

It was only used for FFI type signatures, which are now added to
expressions explicitly in a desugar step.
Always thunk ffi expressions (fixes #376, fixes #257, closes #378)
More newtype ffi tests
Move rmNewtys from compileFFI to compileFFIExp
FFI: Refactor
FFI: Refactor