Sheaves, Cosheaves and Applications