Heterocyst Development and Pattern Formation