Use singular routes when plural routes do not exist

We have two distinct problems here. For new records, it's much simpler -- The detected index route will not exist, so we can simply check `respond_to`.

With show actions, the detected helper method will exist, but take one fewer argument than we think. The method itself is splatting args, so it's difficult to make a determination based on the arity of the function. It seems the simplest thing to do here is check if a model was passed as the format argument.

Fixes #1769
Not extensively enough, but I'm thinking this is the wrong way to go about it. Most of the places that we generate a URL, a singular resource is semantically different than a plural resource. e.g. if `link_to @user` generated `'/user'`, that would be incorrect -- You're not linking to that user, you're linking to "the" user -- And it's not significantly more painful to do `link_to :user`.

So really the only cases where this matters are `form_for` and `respond_with`, where we need the object in addition to the URL that it lives at. The only similar case I can think of here is when we work with nested resources. However in that case, the user is still able to unambiguously give us all of the information required.

I'm not sure we can truly solve this in a way that works consistently and deterministically (especially when you bring nested resources into account). I think realistically, we should do one of these:

- Decide that this is an uncommon case that's outside of the use case these methods are meant to handle, and that the user should manually pass the `url`.
- Add `form_for_singular` and `respond_with_singular`, which uses a singular route rather than the plural.

In both cases, we should improve the error message to inform the user why it didn't work, and point them at how to fix it. My preference would be towards the first option. Thoughts?