* Add test for NSNull to emptiness test
* Import category on UIColor to convert hex codes.
* Remove some obsolete references from LEWorkViewController
* Remonde obsolete reference to timestamp property in LETalkViewController
* Remove obsolete references from LCTalkListController
## GHManagedObject

* indexPropertyName is overridden by subclasses to indicate which property is used to uniquely identify an individual object of that class.
* Expose needsUpdating property to indicate if an object is old enough to be refreshed.
* Move store refresh limit here

### Core Data Optimization

* GHManagedObject factory method
  * Attempt to fetch existing objects before creating new objects
  * Limit reloading frequencies
* Type-specific factory methods for subclasses

### Core Data refactoring

* Move most of the functionality from setValue:withKey: into validateValue:forKey:error: which is where such coercions are supposed to happen.
* Generic coercions are handled by GHManagedObject
* Type-specific coercions can be performed by overriding validateValue:forKey:error:

## Problems

* After refactoring, the text list is empty.
* If the incoming data set has the same modified date as the object in memory, don’t bother setting its values.
* Use the needsUpdating convenience property
* Restore loadIssues functionality alongside softer refreshIssues functionality
* More robust implementation of objectWithEntityName:
* Cells loading again
* Some relationships disabled
## Re-enable reloading.

1. Delete the app from Springboard and reinstall it
2. Data loads once, and only once
3. As far as I can tell, duplicates are avoided
  * This might just be because I didn’t test it long enough to get around the timeout.

### Bug Fixes

* Crasher: reusable instances of NSFetchedResultsController must set their cacheName to nil
  * This is noted by Apple in the NSFetchedResultsController documentation
### Remaining Bugs

* Selecting a talk, only the first cell is shown.
* Later, the rest of the cells will be added as expected.

#### Possible Causes

* Maybe it takes a while to load this data from GitHub
* Maybe the data are not loaded early enough
* Maybe the interface is not updating soon enough
## GHStore

### Login Alert

* HIG: Use meaningful verbs on buttons.
* HIG: Wrap all human-visible strings in `NSLocalizedString()`

### Loading indicators

* HIG: Wrap server loads by showing and hiding the `networkActivityIndicator`

### Regressions

* Loading seems to be happening just fine now. I guess the internet was just being slow.
  * Or maybe that’s the magic of the ‘networkActivityIndicator’
* However, duplicates GHIssue instances are being created every time the app is launched.
## GHIssue loading

### Refactoring

* Factored the loading logic out of refresh
* Gave `reloadIssues:` a boolean parameter to toggle reset / refresh behavior
* Now all that stuff is in the same place in the file.
  * It should be obvious when we’re hitting the server.

### Bug Fixes

* Looking for issues always failed because there was a difference between the GitHub key name and the Core Data property name.
  * Make a clear distinction between GitHub keys and Property Names in the named constants of GHIssue
  * Change the property name back to number anyway because `issueNumber:issue.number` looks better than `issueNumber:issue.issueNumber`

### Regressions

* Despite the big fixes, we still get duplicates every time we start the app.
* Make clear the difference between GitHub server side keys and Core Data client side properties.
* I’ve decided to keep the constants out of the key dictionary, because even though it’s error prone, it reads better, and will likely end up exported into strings file eventually.
Remove needless import.
Rename issueNumber back to number.
Search for the right key, and don’t call lastObject twice.
## Duplicate entires eliminated

* Pick off a few Core Data bugs.
  * Key paths in predicates must use `%K` not `%@`
  * User login/ real name disambiguated.
  * Improved validation of default values.
Merge remote-tracking branch 'origin/master'