Justin Greaves produced a nine-and-a-half-hour batting masterclass as his maiden Test double hundred secured an unlikely draw for West Indies against New Zealand.