Add @todo API and describe ol.geom.Geometry funcs

The `clone()`, `getSimplifiedGeometry()` and `getType()` methods are all
base class methods documented in subclasses.  They should appear in
ol.geom.Geometry in the API docs as well.
Download and use new proj4js
Update externs and ol.HAVE_PROJ4JS for new proj4js API
Update API to work with custom transforms, including proj4js

All transparent proj4js handling is now in ol.proj.get, and a new
addCoordinateTransforms function makes it easy to configure custom
transform functions. ol.Proj4jsProjection is no longer needed.
Update tests
Update example to show manual proj4js configuration
Update example to show transparent proj4js integration
Use proj4.defs instead of proj4.Proj, to conform with the proj4js API
Doc changes suggested by @probins
Document that feature properties are set as object properties
Document that layer options are set as object properties
Improve docs for tilegrid
Merge pull request #2298 from probins/props

Document that options in layers and properties in features are set as object properties
Merge pull request #2177 from pagameba/geometry-api

Add @todo api and describe ol.geom.Geometry funcs
Add proj4 to package.json
Allow Proj4js to be loaded after OpenLayers
Update to use the documented Proj4js 2.2.x API
Simplify ol.proj.addCoordinateTransforms

Equivalent projections do not need to be handled here, and the forward
and inverse functions can be function arguments instead of being nested
in an object literal.
Use proj4.js from node_modules/ instead of copying it to build/
Avoid a type-cast