Remodel Person aggregate, moving EmailMessage collection from the
EmailAddress entity to the Person entity.

Also removed hard navigation properties from EmailMessage to EmailAddress
and EmailTemplate. Message contains string properties for these values now.

Created new area My as new home for some Identity area features.
Re-implement change email spelling feature.

Feature re-implemented using query & command patterns after moving to
new area.
Add fluent validation command handler decorator.

This forces all commands to have a corresponding validator class. A
generic decorator chain enforces all validation rules before handling
the command.
Fix change email feature routing tests.

Moved routing tests from SelfRouteMapperFacts to a dedicated
ChangeEmailRoutesFacts test file.

Also renamed NonEmptyGuidConstraint to NonEmptyGuidRouteConstraint and
removed data annotations attributes from EmailInfo viewmodel.
Introduce IAmNumbered interface into API.

This makes for dryer code when getting the next number from a numbered
collection (dependent entities with an identifying relationship).
Split Routes and ModelMappers into separate folders (root only).

Keeping them separate is more consistent than combining them into a single
"Mappers" folder/namespace. Routing classes were moved to a "Routes"
namespace, and automapper / model mappers were moved to the "Models"
namespace. The old "Mappers" folder and namespace were deleted.
Unit test change email spelling routes, form, mapper, and validator.
Add unit tests for change email spelling controller.

Change email spelling controller & model classes are 100% covered.
Update model fluent validation unit tests to account for error message.

Previously, tests used an extension method to assert that the validation
failed. Unit tests now assert the error message returned for the failure.
Also remove unnecessary using statements in other unrelated files.
Added create person command, handler, and validator.

This was necessary to convert scalar Person properties to protected
internal. The UserFactory class is no longer needed.

Also organized Person unit test folder to mirror domain project.
Fix 32-bit issue with SQLite and add ProfileController to My area.
Renamed EmailAddressesController to ChangeEmailSpellingController.

One controller per feature.
Create UpdateName and Profile controllers in My area.

Also unit tested routers, validators, profilers, and controllers.
Change signature of GenerateDisplayName action method.

The controller now takes 5 scalar strings instead of a viewmodel. This is
more consistent with the command, which does not use DisplayName or
IsDisplayNameDerived properties.
Create People area and move GenerateDisplayName to People.NameController.

Name generation belongs with people, not with self-management.
Create AutoCompleteSalutations action on PersonNameController.

Will be moving here from SelfController.
Remove salutation & suffix autocompletion actions from SelfController.

These actions are now accessible from People.PersonNameController.
Remodel Affiliation to be an Entity rather than a RevisableEntity.

Affiliation now has a composite primary key composed of PersonId and
EstablishmentId.
Implement affiliation controller put method.

Also added unit tests for the affiliation form and profiler.
Refactor EmployeeOrStudent enum in affiliation form.

Instead of EmployeeOrStudent property and EmployeeOrStudentAnswer enum,
renamed enum to EmployeeOrStudentAffiliate and renamed property to
EmployeeOrStudentAffiliation.