Modify bfGetReader to setId() only on valid id

This is a breaking change in the behavior of bfGetReader. All the ui logic for
querying a valid path is now removed from the low-level function and should be
called upstream. A reader is always created but the `setId()` call is only
made if the input id is a valid file path or a fake string.
Add tests to check the new signatures of bfGetReader()
Fix comments and header
Throw error in bfGetReader is id is supplied but not found
cmake: Work with Boost on nonstandard paths
cmake: Add FindXerces
cmake: Add cpp/cmake to cmake module path
cmake: Correct Boost checks and usage
cmake: Use FindXerces
cmake: Correct FindTIFF usage
cpp: compat: Update Boost.Endian
cpp: PixelProperties: Use new Boost.Endian native float types
cpp: PixelProperties: Add byteswap helper functions
cpp: VariantPixelBuffer: Remove endian variants
merge develop -Dorg -Ssuccess-only: PR 1154 (Leica: prevent exception when linking EmissionFilter)
merge develop -Dorg -Ssuccess-only: PR 1245 (Add reader for PicoQuant .bin files.)
merge develop -Dorg -Ssuccess-only: PR 1252 (Add Example code or writing Plate data to ome-tiff.)
merge develop -Dorg -Ssuccess-only: PR 1266 (Analyze: set littleEndian flag correctly)
merge develop -Dorg -Ssuccess-only: PR 1272 (bfGetReader() returns empty reader)
merge develop -Dorg -Ssuccess-only: PR 1273 (cmake: Add FindXerces support and correct minor portability problems)