GCC: fix regressions after declaring constexpr many geometry types methods.

Commit 19105bf introduced using constexpr for lots of methods. It introduced
two kinds of regressions building with GCC:
- Some depended on FloatSize::IsZero, which is not only non constexpr, but
  it cannot be constexpr either, as it depends on fabs, that is not constexpr.
- Some depended on methods that were not constexpr (but we could fix them to
  be, as FloatQuat::P1() or FloatSize::SetWidth().

Those do not break in clang as it is a less picky in the scenario of
defining a constexpr method that depends on non-constexpr methods.

This patch fixes usage of constexpr in both cases adding constexpr
implementations when needed. In particular it replaces fabs calls that are
not constexpr at least in libc++ with a constexpr replacement, fixing
GCC build and adding some extra constexpr that were missing.

Bug: 819294
Change-Id: Ia1143ad4be1067bb8a918f0224b657523599ea97
Reviewed-on: https://chromium-review.googlesource.com/1150529
Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578654}
4 files changed