Commented out feature specs we're about to break.

RSpec: 915 examples, 0 failures, 43 pending
RuboCop: 231 files inspected, no offenses detected
CurrentUserIdentity now uses UserDao.

Broken specs in all controllers, in `UsersHelper`, and remaining
feature specs temporarily disabled.

RSpec: 906 examples, 0 failures, 136 pending
RuboCop: 231 files inspected, no offenses detected
New action and action-responder directories.

At this point, I envision "actions" as "lightweight interactors",
responsible for encapsulating controller actions in a manner
conceptually similar to the lambdas of @enocom's `json_api` use-case
objects, but structured more like the "command object" example in
@krisleech's `wisper` project Wiki. (See
https://github.com/krisleech/wisper/wiki/Command-Object). As such, they
are each Wisper publishers.

Action responders, therefore, are POROs that contain methods to respond
to Wisper broadcast messages.

This is both more lightweight than `ActiveInteraction::Base` subclasses
*and* should mitigate the "mixed metaphors" I referred to in a comment
on Issue #111. (See
https://github.com/jdickey/new_poc/issues/111#issuecomment-60740252)

RSpec: 906 examples, 0 failures, 136 pending
RuboCop: 231 files inspected, no offenses detected
First Action class and spec.

Omitting the time used to fix a typo-level logic error, total time
elapsed to write code+specs was well under an hour. (Don't ask; just
beware copy-and-paste errors.)

`Actions::NewSession` is the first of our new, lightweight Wisper-based
"action" classes; it broadcasts either `:success` or `:failure` with a
payload of a `StoreResult` instance, that tells the receiver (if any)
everything it needs to know about the Guest User entity (for success)
or the "already logged in as <whoever>" message (for failure).

What happens after that? This puppy *doesn't care*, and that's the
whole beauty of it.

RSpec: 911 examples, 0 failures, 136 pending
RuboCop: 232 files inspected, no offenses detected
Wired Action::NewSession into SessionsController.

The `#new` method is probably simpler to read (though I suspect the
McCabe score will be higher); it sets up a fire-and-forget action.

RSpec: 911 examples, 0 failures, 131 pending
RuboCop: 232 files inspected, no offenses detected
Action::CreateSession wired into controller.

* New `ActionCreateSession` code and specs;
* `SessionsController` beginning to show visible change;
* `SessionsController` spec *function* unchanged; database
class/factory changes only

When the specs tell you that the code you thought you copied, pasted
and fiddled with doesn't pass the same specs that the earlier code did,
believe the specs and find your mistakes. :grimace:

RSpec: 921 examples, 0 failures, 121 pending
RuboCop: 234 files inspected, no offenses detected
Wired Actions::DestroySession into controller.

No changes to spec functionality for `SessionsController`; again, only
database identifiers.

RSpec: 925 examples, 0 failures, 119 pending
RuboCop: 235 files inspected, no offenses detected
Actions::IndexUsers wired into UsersController

Removing Pundit from UsersController as we go; #index went from 4
ceremonious lines to 1. Also finished speccing out `#index` action,
which previously only verified HTTP response status.

RSpec: 931 examples, 0 failures, 118 pending
RuboCop: 236 files inspected, no offenses detected
Actions::NewUser wired into UsersController#new

RSpec: 935 examples, 0 failures, 115 pending
RuboCop: 237 files inspected, no offenses detected
UsersController#new when already logged in

It's an error to try to create a new user registration when you're
already logged in. `Actions::NewUser` and `UsersController#new` now
enforce this.

RSpec: 940 examples, 0 failures, 115 pending
RuboCop: 237 files inspected, no offenses detected
Added #find_by_name to UserRepository

Baby steps for now.

RSpec: 942 examples, 0 failures, 115 pending
RuboCop: 237 files inspected, no offenses detected
Added UserDataValidator + support classes.

This is going to be used in the Action for UsersController#create.

RSpec: 980 examples, 0 failures, 115 pending
RuboCop: 245 files inspected, no offenses detected
Wisperised UsersController#create action.

* Parameter validation broken out into (a group of) classes.
* User entities are now sortable; this was added as a debugging aid
while tracking down another series of problems.
* Action error message reporting reworked to make grouping easier.
* Beginning to wonder about Rubocop file counting again.

RSpec: 992 examples, 0 failures, 107 pending
RuboCop: 246 files inspected, no offenses detected
Wired EditUser action into UsersController#edit.

Also fixed a bug in Repository classes that returned nil, rather than
an empty Array, for a StoreResult error field when no errors occurred.

RSpec: 1004 examples, 0 failures, 104 pending
RuboCop: 247 files inspected, no offenses detected
Wired Actions::ShowUser into UsersController#show.

The `Actions::ShowUser` action is oblivious to the current-user status;
the *Web presentation* corresponding to this action is supposed to
display an "Edit Profile" button when a user is viewing his own
profile. That's *beyond the scope* of this Action, which simply grabs
the `UserEntity` that will be used for display.

RSpec: 1016 examples, 0 failures, 103 pending
RuboCop: 248 files inspected, no offenses detected
Wired Actions::UpdateUser into UsersController.

Note that the controller specs for `#update` no longer test the
scenario where one registered user attempts to update the profile of
another. That's been rendered (nominally) impossible by the parameter
changes to the `Actions#UpdateUser` class from the earlier DSOs.

Note further that:

1. The only attributes that can be updated (as whitelisted by the
`Actions::UpdateUser#filter_user_data` method are `:email` and
`:profile`. Any other parameter values passed in are ignored and
removed;
2. There's a *ginormous* FIXME in `UsersController#on_update_success`
where the controller directly accesses the `UserRepository`'s DAO. Oops.

RSpec: 1020 examples, 0 failures, 94 pending
RuboCop: 249 files inspected, no offenses detected
Minor cleanup in UsersController.

Removing commented-out stuff that should have been removed for the last
commit. Read the commit message for that commit if you haven't already.

RSpec: 1020 examples, 0 failures, 94 pending
RuboCop: 249 files inspected, no offenses detected
Wired Actions::IndexPosts into PostsController.

RSpec: 1033 examples, 0 failures, 94 pending
RuboCop: 250 files inspected, no offenses detected
Fixing PostsController#index, Part 2

Wherein we actually make sure it *works*, not just that it's connected.
Oops.

RSpec: 1033 examples, 0 failures, 88 pending
RuboCop: 250 files inspected, no offenses detected
PostsController#new now uses Actions::NewPost.

For some reason, earlier specs confused the 'new' and 'create' actions.
Fixed.

RSpec: 1041 examples, 0 failures, 82 pending
RuboCop: 251 files inspected, no offenses detected