Remove virtual keyword.

It was added in GitHub pull request #2895, but since fell
into disfavor compared to a more general way of negating
storage classes.
[Refactoring] Separate test case for issue 3882 and relates
Merge pull request #3663 from klickverbot/remove-virtual

Remove virtual keyword.
[Refactoring] TypeFunction::purityLevel
fix Issue 12909 - [AA] Function is incorrectly inferred as strongly pure for associative array with key of non-mutable array or pointer as argument
fix Issue 12910 - [AA] `rehash` is incorrectly inferred as strongly pure for some associative arrays
Merge pull request #3667 from 9rnsr/fix12909

Issue 12909 & 12910 - fix purity level calculation for AA parameter
[Refactoring] simplify the code to inherit @safe attribute
[Refactoring] simplify the code in checkPurity
fix 9148 - Issue 9148 - 'pure' is broken
Remove hack for issue 10981
fix Issue 9620 - Error messages of failed pure enforcement
fix Issue 12912 - Lambda function is incorrectly inferred as impure if it uses member field or function
fix Issue 12908 - [AA] `foreach` by keys and values over associative array in pure function allow impure function calls