CASC-233 ErrorRedirectFilter Can throw Null Pointer Exception

Problem: the ErrorRedirectFilter assumes there is a root cause and will null pointer if there is not.
Solution: Only use the root cause if there is one, otherwise use the original exception.

QA Notes: Added unit test to confirm non-root cause error.
Just to eleborate now that I'm on a real computer and not my phone :-):  ServletException was not enough as it was skipping run time exceptions when a filter threw them.  I debated using just Exception but the reality is it then becomes confusing as to what the filter will catch/what it won't regardless of how you configure it.  Now its saying we'll potentially process everything you could possibly configure. That said, its trivial for me to turn it back to Exception (or even ServletException) if people prefer.