Improve implement interface

There were unnecessary calls to retrieve the symbol under the caret each time it was moved.  This has now been deferred to after InterfaceStubGenerator.tryFindInterfaceDeclaration succeeds which indicates there is an interface under the cursor.

This could be further improved by detecting whether the interface is currently implemented.

Also cleaned up the tooltips to share the active patterns with the symbol helpers code.