clean up Makefile a bit

- no warnings when includes don't exist
- add phony target for 'clean'
re-implement BaseField::store() with visitor pattern

The visitor pattern may make it easier down the road to extend our class
hierarchy to have other operations. At this point I don't anticipate other
operations but this seems to be an apt case to use it.

Since performance is a concern for the field classes, only non performance
critical operations should be implemented using visitors; this is why eval()
and grad() are being left as they are. For eval() and grad() I expect a lot of
the cost to come out of the virtual function lookups for the single methods.
Since the visitor pattern works by a simulated double dispatch, we would be
paying for two virtual function lookups per field in the hierarchy. Function
evaluation doesn't seem to translate so well to a visitor anyway.

The particular flavor of the visitor pattern implemented here is inspired by
and quite similar to the Hierarchical Visitor Pattern described at
<http://c2.com/cgi/wiki?HierarchicalVisitorPattern> with slight differences to
fit our particular case, since we aren't following a composite pattern by the
book.