Use Velocity to represent the speed and Instant to represent the time.

~~This is not good.  The benchmarks are 50% slower and we lose accuracy:~~
```
Benchmarking on 1 X 3310 MHz CPU
2014/09/09-22:57:27
Benchmark               Time(ns)    CPU(ns) Iterations
------------------------------------------------------
BM_SolarSystem        33839594579 33805416700          1                                 9.8335070219601273e-01 ua
BM_SolarSystem        37943762279 37908243000          1                                 9.8335070219601273e-01 ua
BM_SolarSystem        33414314246 33337413700          1                                 9.8335070219601273e-01 ua
BM_SolarSystem        33822351909 33805416700          1                                 9.8335070219601273e-01 ua
BM_SolarSystem        33482319093 33477814600          1                                 9.8335070219601273e-01 ua
BM_SolarSystem_mean   34500468421 34466860940          1                                 9.8335070219601273e-01 ua
BM_SolarSystem_stddev 1730273260 1730432962          0                                 9.8335070219601273e-01 ua
```

Fixed in 3fc5361.
We're going to do a subtraction `trajectories.size()` times, and only use the last result. Should this not be moved after the loop and changed to `parameters.initial.time = *times_in_trajectories.cbegin() - reference_time`?
(`reference_time` will need to be computed after the initial time when we change it to the barycentre of the initial and final times anyway).