Changed type of Tree root nodes

(To ReadOnlyList from ReadOnlySet)
Interim release

* Renamed "...Restriction" to "...Pattern"

	* Added an 'Intersect' method to StringPattern, which creates a
	  pattern corresponding to the (AND) combination of two other
	  patterns.

	* Added sense to regular expressions - you can prepend "!" to a
	  regular expression text so that it represents a 'must not match',
	  rather than a 'must match'.

	* NumberRestriction now handles decimals.

	* Some of StringRestriction's fluent methods were overloaded, to allow
	  adding multiple characters sets with one call. Also, some standard
	  character sets were added as static convenience properties for use
	  with WithAllow et al.

	* Added a Json property to the patterns, that allows for easy retrieval
	  of the JSON text corresponding to a restriction.

* Functions.LexiconumericSort, and Functions.UnlexiconumericSort, as
  well as tests for them.

* Misc.PoSorter: Stands for "Partial Order Sorter"

* Incorporated Job, Log5, and a copy of PetaPoco into Common; all are
  in development and removed from the current build.

* Added StateProgressEventArgs.

* AutoDictionay: Like a normal dictionary, but when queried for a key
  and that key does not exist, creates a value automatically and
  returns that (and setting the key/value pair.)

* Added Common.Functions.Power, an exponentiation function for decimal
  values and integer exponents. Does not cast intermediate forms to
  double, thereby preserving the increased precision of Decimal values.

* Fixed a few inconsistencies between the net45 and net40 project.