Deleted the whole project in order to introduce the new, completely rewritten version.
Total rewrite.

The old design was 'rigid' (difficult to modify or extend) and the code was not covered by unit tests. The new design is intended to be much more flexible and widely covered by unit tests.

The features in this new code base match the features present in the old one, except that it does not raise a system notification when the timer goes off. This feature will be reintroduced further.

The most important change in the code design is that now there's an event bus component that other components use to subscribe to specific events like timer events or preferences changes. Any component can also publish events to the event bus.
Proper .gitignore, thanks to @oleksii-taran.
project.pbxproj:

- Removed local search paths.
- Copy OCMockito and OCHamcrest to the products directory during build.
Manually porting changes from the old version: import AppKit rather than Cocoa (changes made by @oleksii-taran).
Update README.md
Revert "Update gitignore and add workspace info"

This reverts commit 392786542f5f93d042bbabdfc9f0f6bfc6fda7b9. (+4 squashed commits)
Squashed commits:
[373b3c8] Revert "Update to recommended settings"

This reverts commit 1a5bad3ae64112acd081a737259ec9089213ae24.
[2b65692] Revert "Replace int with NSInteger"

This reverts commit 675ffcdf4975cce9d01126142a02eb567d23f095.
[144823f] Revert "Import AppKit rather than Cocoa"

This reverts commit 2f36b9aaae559a3d0c378c9b30a12ecbee2e6ccf.
[6b4b9da] Revert "Change bundle identifier prefix to match public location"

This reverts commit 29178f9e32fdf3686e057b59cc27f1302ef1fb13.
Merge commit 'e2e9418cab16c96288ad98bad0f1c1a4d775da1d'