JField is no longer a JValue

This means more type safety since it is no longer possible
to create invalid JSON where `JField`s are added directly into `JArray`s for
instance. Most noticeable consequence of this change is that `map`, `transform`, `find` and `filter` come in two versions:

```scala
    def map(f: JValue => JValue): JValue
    def mapField(f: JField => JField): JValue
    def transform(f: PartialFunction[JValue, JValue]): JValue
    def transformField(f: PartialFunction[JField, JField]): JValue
    def find(p: JValue => Boolean): Option[JValue]
    def findField(p: JField => Boolean): Option[JField]
    ...
```

Use `*Field` functions to traverse fields in the JSON, and use the functions
without `Field` in the name to traverse values in the JSON.

---------

This isn't mergable yet; I'll reconcile with the latest `lift_30` branch soon, just wanted to
get the PR open.

Closes #1300.
It is semantically wrong for JField to be an AST node. Doing that allows building of invalid JSON structures like JArray(JField("foo", "bar") :: Nil). Yes, the downside of this is that there's no longer nice names for name/value accessor functions. Some readability can be restored by using pattern matching when accessing fields, or perhaps by introducing alias functions 'def fieldName(f: JField) = f._1' and 'def fieldValue(f: JField) = f._2'.