Handle type alias while implementing interface

Fix #277
Move IDE-agnostic code to core
Fix the issue with getting interface members
Merge pull request #374 from dungpa/type-instantiation

Handle type alias while implementing interface
add AsyncMaybe CE
use AsyncMaybe in ImplementInterfaceSmartTagger
InterfaceStubGenerator make argument names' first char lower case
cosmetics
fix argument indexing in InterfaceStubGenerator
fix after rebase
fixed: InterfaceStubGenerator duplicates property setter arguments
add a InterfaceStubGenerator test for property setters
Merge pull request #376 from vasily-kirichenko/implement-interface-argument-names

Implement interface argument names
add tests for InterfaceStubGenerator.normalizeArgName
Merge pull request #378 from vasily-kirichenko/add-interface-stub-generator-tests

Add tests for InterfaceStubGenerator.normalizeArgName