Heegard-Floer Homology and Applications