Initial functional commit

- Initial rete implementation (first draft)
- Inline C# rules using crude DSL is the only option for now
- No DI container yet
Ignoring binaries and such.
Placeholder for update/retract of facts
Adding some unit tests and refactoring a bit.
Adding a simple integration test.

A rule for determining if an insurance applicant is likely to commit
fraud because of shady finances.
Undoing some of that BS I put in there yesterday

The session factory should create the network and the session should be
in a good state at construction.
Undoing more BS I put in there yesterday.

Tried to hack together an integration test without a DI container. This
is a stop gap which will be expanded on later.
Finishing up basic testing.

From now on, we'll add coverage as we go.
Retract facts
Finished implementation of fact retraction

- Refactored facts and tuples to maintain linked lists of child tuples
- Reworked logic for retraction
NOTE: Some unoptimalities exist with how join conditions select facts
from tuples
Improved tuple handling and fixed retract bug
Added fact update functionality
Rebased and added tests

- Rebased off of the latest develop head
- Added tests and fixed a bunch of merge conflicts
- Applied code cleanup
Rehashed integration tests

- Moved existing ones to samples
- Implemented integration tests that use contrived rules and facts to
cover all use cases
Implemented collections and aggregates

- Changed join style to start with a dummy left node, instead of beta
adapter on alpha memory
- Refactored rete builder so that we can chain beta sub-nets
- Moved conditions to declarations, and renamed join conditions to
conditions on the rule. Refactored conditions to have one class that
handles all cases
- Added composites, that allow implementation of fact aggregation
strategies
- Implemented one aggregation strategy for single-type collections
- Added many integration tests
Normalized file endings
Refactoring to prep for existential rules

- Unified different types of rule conditions into a predicate class
- Added placeholder to DSL for existential rules
Reworked collections, added existential rules

- Changed aggregates to join with the rest of rule inputs
- Added existential rules
- Some refactoring
Stateless Rete

- Pulled rete state to working memory
- Refactored alpha and beta nodes to better support stateless processing
Logging

- Added logging via Common.Logging
- Cleaned up error messages
- Minor refactoring