DMRECON: make use of scaled matrices explicit

Previously, calling some of SingleView's methods on a reference view
meant using matrices matching the reconstruction scale.

Make this explicit.
DMRECON: group projs and invprojs in img_pyramid

Also keep the original color image in img_pyramid[0]. Together this
saves some checks for level == 0 and should improve readability.
DMRECON: create image pyramid immediately

Create the image pyramid immediately after loading the color image.
This will be needed for an optimization.
DMRECON: allow only integer scales

Fractional scales are rarely used, so only allow integer scales.
This will be used in an optimization.
UMVE: don't cast dmrecon scale to float

As dmrecon now only allows integer values, this cast is unnecessary.
DMRECON: pick scaled_image from image pyramid

Scaling the image with rescale_gaussian is slow, pick it from the
image pyramid instead.

This change causes small differences in the resulting depth maps.
DMRECON: x.get() -> x != NULL in boolean context
DMRECON: check whether scale exists

Check whether there actually is an image for the given scale in
the image pyramid, throw an exception if there isn't.
DMRECON: make it work again on odd image sizes
DMRECON: catch exceptions inside DMRecon::start()

Better cancel one reconstruction than let the whole program fail.
DMRECON: assert on scaled image

getScaledImage() is only called on the reference view, which should
always have a scaled image available.
DMRECON: use mve::geom::pixel_3dpos
UMVE: Fix compilation with Qt5.
DMRECON: Resolved merge conflict