Testing and toString() improvements

In order to making debugging a bit easier, all of the types have been
given toString() methods.  These methods are implemented using default
Eclipse implementaions.

In addition, a number of the types, especially down in the scanner-
lexer-parser area were tested only indirectly.  All types are now
tested directly and test coverage has significantly improved.
Make JsonPath serializable

In order to support situations where JsonPath needs to be Serializable
(e.g. #11), JsonPath now implements java.io.Serializable.  In order to
serialize the minimum amount of data, the class does not use the
default serialization implementation.  However, the typical
implementation of custom serialization (i.e. readObject(),
writeObject()) wasn't an option for JsonPath as it is immutable.
Therefore a custom SerializationProxy was introduced.  This proxy
simply serializes the original String expression of the JsonPath and
calls JsonPath.compile() on deserialization.  This implementation
minimizes the amount of data serialized (space) trading it instead for
increased CPU load on deserialization due to recompilation (time).
Merge branch 'serializable'