hector_pose_estimation_core: do not return reference to (potential) temporary in Collection::add()

Collection::add() returned a const reference to its argument, which could be a temporary depending on how it is called.
hector_pose_estimation_core: added a method to get the residual of the last measurement update to Filter::Corrector_<Model>
hector_pose_estimation_core: removed the SymmetricMatrix(dim,value) constructor
hector_pose_estimation_core: properly cleanup the cached noise variance in Measurement_<Model>::reset() default implementation
hector_pose_estimation_core: reintroduced traits for SystemModel and MeasurementModel implementations
hector_pose_estimation_core: fixed calculation of reference magnetic field vector pointing to magnetic north and inversed transformation to body frame
hector_pose_estimation_core: fixed missing return value in EKF::predict()
hector_pose_estimation_core: do not scale variance of magneto measurement in normalized mode

With this patch the magnetic/stddev parameter is considered as the standard deviation of the
normalized measurement vector and not of the raw measurement if the magnitude of the field
is not modeled (the magnetic/magnitude parameter is 0). If the magnitude is set, the normalization
is inactive and the stddev relates to the original measurement vector.
hector_pose_estimation_core: moved check if a pseudo update is required from Model::active() to PoseEstimation::update()
hector_pose_estimation_core: added parameter 'use_bias' to measurement models that can incorporate biases

* Only the AccelerometerModel and GyroModel add new substates named `name + "_bias"`. There could be multiple accelerometer and gyro models.
* The default name for these two models is "accelerometer" and "gyro" and the default bias substates are called "accelerometer_bias" and "gyro_bias".
* Measurement models Gravity, Zerorate and Rate have a new string parameter 'use_bias' which defaults to "accelerometer_bias" or "gyro_bias", respectively.
* Only if this substate is found the biases are considered in the measurement models. Otherwise the models will not use a bias.
  The gravity model uses the bias only to calculate the expected measurement vector but does not populate the respective entries in the measurement matrix.
* The initialization order of systems and measurements in PoseEstimation::init() has been swapped. First systems to register new states, then measurements.
* The 'imu' input is not added automatically anymore by the GenericQuaternionSystemModel, but is only used if it was already registered before initialization.

The whole patch aims at incresing the flexibility, e.g. to use the GenericQuaternionSystemModel without an IMU and/or with other force and torque inputs.