Refactor to use ContextActionAvailabilityBase.
Minor fix.
Changed availability classes to fulfil base class requirements.
Major refactoring: moved to ContextActionExecutorBase and start using CSharpFactory properly.
Implemented and fixed a lot of stuff (will never do this agail!): added contracts for enum and refactored a lot of stuff.
Fixed compatibility issue with R# 8.0 SDK for checking is default argument is null.
Minor updates for project with older SDKs