Generalising the RangeFacet (and associated parser/generator/test) to be optionally inclusive on each bound

Generalising the RangeFacet (and associated parser/generator/test) to be able to specify whether or not each bound is inclusive. The default behaviour remains the same (from is inclusive, to is exclusive). Issue 3660.