InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees