Rename artifact in Maven not to conflict with the Heroku Spring template.
Ignore user smartsheet.properties files.
Remove unnecessary sub .gitignore.
Use the Smartsheet id of the user associated with the access token as the
id of the token stored in the db (and the cookie) instead of a random
value. This reliable and likewise unique id allows us to always associate
settings for the particular user, even if the user regenerates the cookie
used as a pointer to their access token.

Introduced a User model class.
Clean up AccessTokenResolver by adding encapsulation and specifying request scope.
Encapsulate get/setting of the token id attribute passed in the HttpRequest inside SecurityUtil so as not to leak the attribute name details.
Add lastLogin property to AccessToken, set when OAuth dance completed for a user.
Clean up AccessToken by adding encapsulation.
In HomeController, include lastLogin in the model for the view, using the current time if not available (old token record case) and updating the token record in this case.
In the view (home.jsp) render the lastLogin in the navigation bar next to the About item.
Add a httpStatusCode property to ApiException which is set by SmartsheetRestTemplate.
Add a RateLimitedRestApi interface which is implemented by SmartsheetRateLimitedRestApi.
SmartsheetRateLimitedRestApi wraps a SmartsheetRestTemplate which serves as a delegate for the actual API calls.
Any ApiException thrown by the template is mapped to a new ServiceUnavailableException if the status code is 503.
Introduce a SmartsheetRetryingRestApiFactory to create a RateLimitedRestApi proxy which implements the wait & retry algorithm recommended by Smartsheet on rate limit exceeded errors, wrapping the actual RateLimitedRestApi.
Change SmartsheetAPIImpl to call the SmartsheetRateLimitedRestApi on any API calls involving access tokens and which are thus susceptible to rate limiting.
Add JUnit as dependency. Then add unit tests for the wait & retry logic
implemented in SmartsheetRetryingRestApiFactory.
Use properties configured in environment variables if available. If not,
only then use properties defined in the properties file.
Hence can now dummy out the properties in the properties file, even when
deploying to Heroku.
Environment variables to set (via heroku config:set):
smartsheet.client_id
smartsheet.client_secret
smartsheet.redirect_uri
Feed the ego.
Formatting cleanup.
Update README with environment variable config.