Ensure registration controller block yields happen on failure in addition to success 

...and closes #2936.

Now with 100% more unit tests.

I introduced the concept of a `/custom` URL namespace that we can use to test customized controllers in the future. While I'm sure this can be expanded and cleaned up, my solution right now is the simplest thing that works to solve the problem at hand.

With that said, this is my first time contributing a PR to devise, please let me know if I did anything stupid.