Colchester United slipped to their first home defeat in more than three months when they were beaten 3-2 by Crawley Town.