Fix UseNullptr fails to replace c-style explicit cast in a return statement

This happens whenever there is a c-style explicit cast to nullptr not
surrounded by parentheses following a return statement.

- Added a white space before nullptr if the character before is alphanumeric
  when replacing the null pointer expression.
- Simplified visitor
- Addes tests


git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@179103 91177308-0d34-0410-b5e6-96231b3b80d8