Add Conditional Request and Data Persistence Support Alternative Solution

An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.
Change List
---------------
1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.
  * Add ```GithubObject.etag``` property
  * Add ```GithubObject.last_modified``` property
  * Modify ```Requester``` class to handle 304 response code
  * Modify ```Requester``` class to enable making conditional request
  * Add ```NotModifiedException``` class for 304 response code
  * Add ```GithubObject.update()``` method
  * Add a few private helper methods to make this work
2. Add methods for Data Persistence
  * Add ```GithubObject.save(file_fname)``` method
  * Add ```GithubObject.load(file_fname)``` class method
3. Test class for conditional request

Usage
---------------
```python
# Get remote issue list and cache locally when syncing
for issue in repo.get_issues():
    issue.save(local_file_path)

# Offline use/Quick restore previous work state
for local_file_path in cache.get_files():
    cached_issue = issue.load(local_file_path)
    #do something with it

# And check for update when needed
if (cached_issue.update()):
    print "Issue synced“

```