Replace DateTime with Carbon, add setTestNow

Carbon has a `setTestNow` method that ensures that all `Carbon::now()` and similar calls return the same timestamps. Prevents false negatives in unit tests that might occur if you're comparing two "new DateTime" instances but one was created at 16:00:00.999 while the other was created at 16:00:01.000.