WIP - Very rough first pass at adding a rule file, a Rule_t struct,
and a procedure for loading the file into the struct
WIP - Added a rule_destroy function and cleaned up calls to free for
error handling inside rule.c
Removed accidental commit of rule binary
WIP - Separated rule.c into rule.c and rule.h
WIP - Added rule file definition in data files. Move /rules folder to
project root. Added rule initialization and freeing in main()
WIP - Added Rule_t* to frontend main functions and generate() so it
is in scope in the generate function
Changed generate() to use transitions defined in the passed in Rule
WIP - Added neighbor function look up and fixed several bugs with
neighbor type rule parsing. Fixed incorrect value in GOL rule file
WIP - Added the state to check neighbors for to board neighbor functions
rule definitions and calls in generate(). This should enable automata
like wireworld to count neighbors of different states differently
Made front ends use display values for each state set  by rule file
e.g. state 1 shows as o for GOL and state 1 shows as white in graphical
front end
WIP - Added rule file for wireworld, a data file for it, and shell
script to quickly run it. Added rule code to handle rules that don't
need to count neighbors. Added generate code to check for that
Removed debugging print and fixed a potential buffer overflow in
rule file parsing
Made generate() a little faster by only calling neighbors when needed.
Implemented the full diode pattern in the diode.dat file
Added the ability to negate a rule with ~, so that the transition occurs
if the neighbors != a given list of counts
Added life.rule file change missing in last commit. Takes advantage
of new "negated" rules
Cleaned up generate() by creating a separate function for handling
each cell
Merge branch 'develop' into feature/add-rule-files
Merge branch 'develop' into feature/add-rule-files
Added feature to change log
Small fix to diode.dat. (removing blank line)