Cooperativity and allostery in haemoglobin function