[core] Add sphere and spheroid reference models.

Add new tags for reference sphere/spheroid concepts.
Add cs::model::sphere<> and cs::model::spheroid<>.
Add get_radius(), set_radius() and radius_type<> functions/metafunctions.

Add tests.

Refactor [extensions] nsphere to use the official functions.
[extensions] Use Spheroid in andoyer and vincenty strategies.

Replace RadiusType template parameter of those strategies with Spheroid.
Replace member function radius() with model() and typedef radius_type with
model_type.
Use get_radius(), calculate flattening "manually".
Tweek calculations (conversion warnings, common multiplier).
Remove detail::ellipsoid<>.
[core] In spheroid, replace if with ?: operator.
[algorithms][extensions] Add detail flattening() algorithm and use it in andoyer and vincenty strategies.
[core] Move spheroid and sphere from cs::model to srs namespace.

Change reference_sphere_tag and reference_spheroid_tag to srs_sphere_tag
and srs_spheroid_tag respectively.
Adapt algorithms, strategies and tests to the new namespace and tags.
[core] Replace radius access 1-character tparams names with meaningful words.
Merge pull request #181 from awulkiew/feature/geographic

Feature/geographic