Allow classes created with L.Class.extend to be constructed without `new`

This uses the "instanceof trick" from John Resig to ensure that
`new Foo(…)` and `Foo(…)` both return a newly constructed instance.

This eliminates the need for separate camel-case functions that wrap
the constructor (e.g. `L.map`). The subtleties of that approach are
a source of confusion and frustration for new users.

I suggest that the documentation be changed to exclusively reference
a `new L.Map()`/`L.Map()` style. Obviously we'll have to keep the camel-case
variants around for backward compatibility at least until a major version
release.
Allow LatLng, LatLngBounds, Point, and Bounds to be constructed without `new`
Alias camel-case constructors directly
Construction via `new` can't return null or undefined as is