add `optionalField` lens, fixes #3, #4

This allows access to fields that maybe are missing. Subfeatures:
  * `'field.?`-syntax as shortcut to optionalField
  * optional fields can be `modify`d
  * an optional field can be `set` in which case it gets created if it is missing
  * json-path field syntax automatically uses `optionalField` instead of `field`,
    which implements the spec better than before
wrap exceptions so that the actual stack trace doesn't get lost
new operation `modifyOrDeleteField` which can be used in conjunction with `optionalField` to delete fields
update to recent version of scala/sbt
add test examining the current behavior when `optionalField` are nested and `set` is applied

Current result:

One could think that nested `optionalField`s and `set` would create intermediate
objects as well. However, this is currently not possible, since
 1. the signature of UpdateLens.updated doesn't allow to operate on
    missing parents, which would be necessary to let child lenses
    control the creation of parents.
 2. the combine lens would then have to support it

This test remains here as witness to the current behavior.
new `setOrUpdateField` operation to udpate `optionalFields`
refactoring: move OptioalFieldOperations into their own file
update README with notes about the new optionalField related operations
get rid of setOrUpdateField(f: Option[T] => T) because it basically has no advantage over the other overload

but interferes with type inference
bump version
bump version in README
fix notes