Protected completion

Filter protected and private members from the completion list based on the location and the type we are accessing it on. The change leverages the checkClassPropertyAccess to check if it is a valid access instead of duplicating the code.