Merge discontiguous point indexes into 2.0.x-feature

Addition of discontiguous point index feature by implementing PointIndexes class that is a collection of contiguous ranges. StaticRange then uses this class to iterate over each of these contiguous ranges when returning ranges of indexes.

Desired indexes are specified when constructing a database by passing a PointIndexes object to DatabaseTemplate (instead of a single integer for the number of points). The DynamicPointIndexes and StaticPointIndexes classes can be used to create the underlying buffer storage used for PointIndexes.

Example modification to Outstation demo which sets each type to have the indexes <3,4,5,6,10,13,17>:
```
	//stackConfig.dbTemplate = DatabaseTemplate::AllTypes(10);
	DynamicPointIndexes indexes({{3,6},10,13,17});
	stackConfig.dbTemplate = DatabaseTemplate(indexes,indexes,indexes,indexes,indexes,indexes,indexes,indexes);
```

All existing tests pass. Additional tests to exercise DNP3 conformance requirements for returning multiple contiguous ranges of indexes via multiple responses added.