Improvements in OSM mappings

Support for adding default fields in MappingRule.java
Better handling of lies/plygons and extra options

This commit addresses #513 and #514

Documentation has been updated and the OSM chapter cleaned, removing a section that shouldn't be in the manual
fixed issues with default field names
fixed issue when unmapping polygons

fixes #522
fixed unmaping issues.

-avoid creating null values when unmapping
-handle default fields correctly
added —id option to create-changeset
added osm apply-diff operation and command
make -f parameter in som create-changeset mandatory
reuse username when unmapping osm data
added --geom-name option to geojson import
Added check to geom-name option in import operation.

Now it verifies that the name is not being used.

Also, added --geom-name-auto option in geojson import
added featuretype id to show command output
Added CRS description to output of show command

It includes some refactoring of the CRS serializing functionality
adapted functional tests for shown command
Changed P4JEntry point to report progress based on progress listener, not on parsing output
fix compile error due to CLI's progress listene being private
fix imports in OSMUnmapOp and CreateOSMChangeset
Mark nodes to be deleted as having NULL ObjectId.

Instead of having RevTreeBuilder2 an in memory list of nodes to be deleted,
make it mark them as having ObjectId == NULL and add them to the NodeIndex,
then call RevTreeBuilder.remove(node.getName()) instead of RevTreeBuilder.put(),
to avoid potential out of memory errors.

Also make FeatureToDelete hold its type instead of a separate "path" field
to make it less of a special case.
faster ObjectId.toString(), avoids cloning the internal byte[] hash code
cache EntityConverter's feature factory to avoid overhead of multiple lookups under load
Change return type of ResolveGeogitDir from URL to Optional<URL>. It's bad practice for commands to return null.