Algorithms and Generalizations for the Lovasz Local Lemma