Add newlines to some examples, update factorial.ff

Fix bug where the evaluated values of function calls get freed early.
Fixes for boolean function found through new test.
Hash function is cooler. Update Makefile gitignore

--Hash function now uses a couple bit shifts. It also uses an AND
  instead of modulo. This makes the hash table bigger which reduces
  collisions but is hard to justify without the bitwise AND.
--Rearrange if-code-return-early blocks so that the ones which pass
  most frequently get executed first.
--Update gitignore to ignore files from gcov. God that is messy.
--Change Makefile to not use the CFLAGS needed for profiling by
  default.
--If I want to return the value, why not do that instead of breaking
  out of a for loop and doing a pointless NULL check.
--Make sure a couple variables are initialized.