String Theory Compactifications