Standardize syntax

**Nice work cleaning up the list functions!** This pull request is to standardize the syntax and add Travis CI support to make sure it stays standard when other people contribute. I value a consistent codebase that looks like it was written by a single person even when it has many contributors.

I changed some syntax in ways you might not like, let's discuss it here. I see you put commas at the beginning of lines, and I totally get how that makes them easier to delete, but I moved them to the ends of lines to make jshint pass. We could set jshint to ignore commas, but if we keep it strict then other contributors (or ourselves) won't be inconsistent.

You also omitted semicolons, which is legit too. I even saw a talk that encourages people to omit them. However in certain situations they will be inserted incorrectly by the interpreter and screw up returned values. Probably not a concern, but if we leave them in and let jshint check then we know for sure we'll be OK. So I put them in.

Getting jshint to pass required turning on strict mode evaluation, and this actually broke tests. When you freeze an object it actually throws an exception when you try to change it, rather than simply refusing to change it. Also passing the linter meant switching to strict equality (===) and this broke the omitted argument test since an omitted argument is `undefined`, not `null`. So I think there is value in the linter beyond standardization, since the code would have behaved slightly differently in a strict mode environment and now we know.

**To summarize**
* Enabled linting as part of continuous integration to standardize future contributions
* Fixed existing lint problems
* Fixed ensuing test failures
* Updated grunt tasks and travis config