Separated code completion queries into CodeCompletionServices

This pull request separates code completion queries into a `CodeCompletionServices` class and out of the `CodeBlockEditor` UI component so that it can be tested independent of the UI, `DynamoModel` etc. with its own core and own set of libraries. This is part one of a series of submissions involving this change. The PR's that will follow will include calls into `CodeCompletionServices` from the UI as well as rewritten unit tests making use of only `CodeCompletionServices`.

@Benglin please review.
Based on the documentation here, these can only be ```Class```, ```Method``` or ```Property```. In which case we may not need to pass a ```description``` to the constructor, having just ```CompletionType``` would do (we can generate description internally). If this redundancy can be removed, then it will improve the quality of the API.