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.
What was the reasoning behind doing this vs leaving it as a case class? If we do this, then it means we're gonna have a whole lotta `_1` and `_2` peppered about...