Add BitSetUtils for compact bit set storage.
Add BitSetUtils unit test.
Use a bit set for PlainStreetEdge boolean flags.

This should be a drop-in replacement to the previous version.
Remove unused length from ElevationProfileSegment.
Extract bikeSafety from ElevationProfileSegment.

This does not optimize anything by itself but this is the
first step in the optimization of ElevationProfileSegment.
Make ElevationProfileSegment more immutable.

Also correct minor bugs in TestTriangle unit test.
Make elevation coefficients multiplier of length.
Use shared singleton for no elevation profiles.

This reduce memory usage by 8% (11% compared to geometry-optimized
version) for graph with no elevation data. No optimization for
graphs with elevation data.
Make bike safety a multiplier of length, w/o units.

This help reduce the range of bike safety to reduce
entropy of stored data.
Fix for making bike-only mode work.

Since we always enable WALK, we should set default
nonTransitMode to BIKE for bike-only mode.
Add missing dependency for NED builder.
Make bikeSafetyFactor a float.
Add variable length int encoder/decoder utility.
Make Dlugosz int packer null-safe.
Revert fix for bike mode, make some test fails.
Add TODO comment in spurrious tests to check.
Add compact elevation profile with var-len int.
Add unit-testing for compact elevation profile.
Use packed elevation profile.

This saves between 20 and 30% of the graph size by packing
elevation profile data which are highly redundant (delta
coding).
Use floats in ElevationProfileSegment.

This saves around 1.8% of memory.