Adds some non-fluent methods in EquivalencyAssertionOptions

I have always found the fluent api confusing when reading within this class creating extra navigation to definitions.  It reads fine when used fluently.  This uses some private methods within the class to improve readability.
Moves default IEquivalencySteps from EquivalencyValidator to IEquivalencyAssertionOptions
Starts to switch the execution of IAssertionRules to be IEquivalencyStep

Conflicts:
	Shared/Equivalency/ShouldAllBeEquivalentToHelper.cs

Conflicts:
	FluentAssertions.Core/Equivalency/EquivalencyAssertionOptions.cs
	FluentAssertions.Core/Equivalency/EquivalencyValidator.cs
Changes ApplyAssertionRulesEquivalencyStep to a more general AggregateEquivalencyStep

Conflicts:
	Shared/Equivalency/ShouldAllBeEquivalentToHelper.cs

Conflicts:
	FluentAssertions.Core/Equivalency/AggregateEquivalencyStep.cs
	FluentAssertions.Core/Equivalency/EquivalencyAssertionOptions.cs
	FluentAssertions.Core/Equivalency/EquivalencyValidator.cs
Changes the Restriction implementation to create an EquivalencyStep instead of an AssertionRule.
Moves classes to individual files
Adds some specs over equivalency configuration appearing in exception messages
Removes AssertionRules member from IEquivalencyAssertionOptions.
It is no longer needed for anything built-in.
Makes IEquivalencyStep use IEquivalencyValidationContext instead of EquivalencyValidationContext
Makes IEquivalencyValidator use IEquivalencyValidationContext instead of EquivalencyValidationContext
Makes TryConversionEquivalencyStep create a new context.

This allows the context to be immutable.
Moves EquivalencyValidationContextExtentions to its own File
Also renames EquivalencyValidationContextExtentions  => IEquivalencyValidationContextExtentions
Corrects an issue wherein Using would apply the assertion rule to the root object.

While ultimately we may want this behavior it deviates from previous behavior.  Additionally it is not implemented correctly for handling the root object.
Revert "Moves default IEquivalencySteps from EquivalencyValidator to IEquivalencyAssertionOptions"

At this time I do not see exposing this to users.  Perhaps in the future.

This reverts commit d70c2cf0f41cb0af5d9722c25585767da701e686.

Conflicts:
	FluentAssertions.Core/Equivalency/EquivalencyAssertionOptions.cs
	FluentAssertions.Core/Equivalency/IEquivalencyAssertionOptions.cs
Makes EquivalencyAssertionOptions.Using(IEquivalencyStep) internal.

That interface is not stable enough to expose at this time.
Doing this required moving ShouldAllBeEquivalentTo and changing its visability.  So users will hopefully not try to use it, the method was changed not to be an extention method.
Removes unused property in EquivalencyValidator
Removes AggregateEquivalencyStep by directly using UserEquivalencySteps.
Merge pull request #189 from vossad01/Various/BeginDeprecationOfIAssertionRule

Starts to replace AssertionRules in favor of EquivalencySteps