Use faster loops in CompositeSpecimenBuilder
Avoid LINQ statement in EnumerableRelay
Use a GetHashCode optimisation in ListSpecification
Use a for-loop instead of LINQ in OrRequestSpecification
Optimise RecusionGuard with GetHashCode and for-loop
Improve performance and address review issues for #218

This commit rolls back the previous `GetHashCode` optimisations, because after further testing, they are not important enough to warrant the reduced readability. This improved readability in `RecursionGuard` and removed the previous change to `ListSpecification`.

This commit adds `NullableEnumRequestSpecification`, `ArrayRelay`, `CollectionRelay`, `DictionaryRelay`, and brings `EnumerableRelay` up-to-date with the style and performance warning code comment.
Added missing perf-sensitive comment on OrRequestSpecification
Merge branch 'perf-testing' of https://github.com/adamchester/AutoFixture into adamchester-perf-testing
Removed LightweightMaybe,

because previous performance optimisations removed all except a single use
of it.
Updated Zero29 NuGet package.
Incremented patch version,

in order to indicate that performance improvements (however important they
may be) don't add new features, but are rather to be considered as
'fixes'.
Make RecursionGuard thread-safe,

by maintaining the stack of requests on a per-thread basis.
Made TerminatingWithPathSpecimenBuilder thread-safe,

by maintaining the stack of requests on a per-thread basis.
Added a test to help ensure Fixture remains thread-safe
Improved usage of ConcurrentDictionary by Thread,

because the GetOrAdd method easier to read and more idiomatic. Additionally, using the Thread instance as the dictionary key makes the intended usage more obvious.
Use ForceParallelism and ValueCollectingVisitor in fixture thread test.

Moved SpecimenWithEverything into AutoFixtureUnitTest project, and the IsPopulated() logic was also removed, and is now handled externally (by the test, and the ValueCollectingVisitor).
Use ForceParallelism in concurrent threading tests,

for RecursionGuardTest and TerminatingWithPathSpecimenBuilderTest.
Stop needlessly instatiating a Stack<object> on each GetOrAdd,

in RecursionGuard and TerminatingWithPathSpecimenBuilder.
Incremented patch version,

in order to indicate that making some classes thread-safe is a fix rather
than a new fixture.