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.
Fixed interim release

(The old wording, "restriction", still appeared in a few places -
notably, in the interface. Also, added a GetType() method to Unions.)
Fixed to StringRestriction.Enum
Renamed Common.Tests.Functions to FunctionTests

(This makes Intellisense nicer when writing unit tests.)
Added Common.Functions.TitleCase

* This tries to case a string like a book title: Every word with its
  first letter upper-cased, except for internal words which are
  definite/indefinite articles, coordinating conjunctions, or
  prepositions. This method only works approximately, because it does
  not actually parse the phrase given.
More work on password generation
Renamed Common.Tests.Password to PasswordTests

(and propagated changes to net40)
Generalized a few .gitignore rules
Add a case for parsing JSON dates
Cleanup
Replace DateTime with DateTimeOffset in Jsval
Version changed to 0.5.3
Transfer changes to net40
Beta 0.5.3 (DateTimeOffsets in JSval)

Summary merge: 'beta-fixes'

* Transfer changes to net40
* Version changed to 0.5.3
* Replace DateTime with DateTimeOffset in Jsval
* Cleanup
* Add a case for parsing JSON dates
* Generalized a few .gitignore rules
* Renamed Common.Tests.Password to PasswordTests
* More work on password generation
* Added Common.Functions.TitleCase
* Renamed Common.Tests.Functions to FunctionTests
Add Bus and BufferedEventSource
Convert progress event types to strings in JSON
Fix inconsistencies between net45 and net40
Change version to 0.5.4
Beta 0.5.4 (Bus, BufferedEventSource)

Summary merge: 'beta-fixes'

* Change version to 0.5.4
* Fix inconsistencies between net45 and net40
* Convert progress event types to strings in JSON
* Add Bus and BufferedEventSource