Syntactic changes in utils/

I've made a number of changes in utils to reflect discussions about syntax. This includes:
- Adopting the standard naming convention for categories (i.e. `NSObject+Category.h`)
- Syntax of methods and properties
- Where appropriate I've split multiple interfaces/implementations into separate files
- Changing object creation from class methods to instance methods (`[[Object alloc] initWithInfo:info];` instead of `[Object objectWithInfo:info];`)
- Removing ivars and implementing them as properties. This includes moving `@private` properties to a class extension in the implementation file.
- Lazy instantiation instead of explicit instantiation for new objects.