Add failing usage test.

Add a test demonstrating usage of the named arguments syntax for Bob,
currently failing until the feature is implemented.
Add first unit test for named arguments syntax.

Pass the first unit test for named arguments syntax, setting a string
property with a named argument.
R#: Extract method.
R#: Rename
R#: Extract interface
Add NamedArgumentsDynamicBuilder.

This is a Decorator for DynamicBuilder to store the named arguments parsing.
Hook up the Decorator.

Return a `NamedArgumentsDynamicBuilder<T>` from `A.BuilderFor<T>()`.
Introduce method for setting a member's name and value.

This removes a little bit of duplication (textual only, I guess), but paves the way for factoring out an interface for this responsibility.
R#: Extract interface.

Sadly even internal interfaces must be implemented publicly.
R#: Reformat
Add an `IArgumentStore`.

The `NamedArgumentsDynamicBuilder` needs to be able to call into an
`IArgumentStore` to add argument names and values to be resolved by the
`DynamicBuilder`.
Add support for named argument parsing.

The argument name munging is not pretty and needs improving (and perhaps
breaking out into another class?), but it does at least currently work.
R#: Extract Method
Fix the `SampleTypeEqualityComparer`.

This resolves a false positive on the ExampleUsage test, which was passing
even though it specifies multiple arguments to `With()` and the
`NamedArgumentsDynamicBuilder` supports only one argument.
Add test for multiple named arguments.

The `With()` API call should support multiple named arguments being
supplied. This also passes the example usage acceptance test.
Throw when no names are supplied for the values.

Throw an `ArgumentException` if none of the arguments provided to With() have names.
Throw if some arguments are missing names.

Throw an `ArgumentException` if some of the arguments to `With()` are
missing matching names. Previously, the unnamed arguments would simply
have been ignored.
Move argument checking to correct place.

This behaviour was accidentally added to `DynamicBuilder` rather than
`NamedArgumentsDynamicBuilder`.
Rename `TryInvokeMember()`.

`IDynamicBuilder<T>` defines `TryInvokeMember()`, which is a method from
`DynamicObject`: this is wrong. Rename the interface method, and delegate
to it from the override of `TryInvokeMember()`. This delegation only needs
to occur at the outer-most level of the decorator stack.
Pull out a base class for builders.

This base class pulls together the interfaces builders have to implement
and implements the shared IArgumentStore functionality.