Batley and Spen by-election: Labour cling on to seat by 323 votes