Building and Training Large Language Models for Code: A Deep Dive into StarCoder