Updates rule constructors to use parent constructor and set default messgage where needed.
Minor formatting update
Adds InvalidField exception.
Adds the concept of fields to the main naviagation class.