Refactored binary (adding features)

- Now allows the specification of a configuration file with --config
- Make the default JSON config file output look neater with less code (plus added a newline at EOF)
- Removed non-ECMA standard 'const' (mostly to keep jshint happy)
- Tucked configuration vars into an object so the values could be accessed in helper functions with the reference in their closures
- Created helper functions where code was duplicated
- Use path.dirname to eliminate the need to maintain a configPath
- Got rid of configPathExists and configFileExists variables, the caching advantage (of up to one call) wasn't worth the awkwardness of maintaining them once the config file became parameterized.
- Moved the proclamation of what environment is used to after the config file gets loaded, it seemed silly to say "using environment 'production'" followed by "Type --help for usage information" on a no-op.
Bring var formatting in line with conventions
Merge remote-tracking branch 'iamjochem/feature/findAndCountSugar'
Several things in this commit: 1. New scope() functionality, works very similar to ActiveRecord's scope. 2. Big internal changes (but as of right now only related to scope()) made for the {where} object when using finders. Could be useful for some, it basically breaks down several where objects into one concise object. 3. New where finders.. 'eq', 'like', 'nlike', 'notlike', and 'not' (not in). 4. New finder shortcuts, '..' for between and '..' for not between
remove bogus sanity check - when adding an attribute (i.e. defining the data property in terms of getters and setters, we should not care about whether the relevant underlying dataValue is already set or not - previously added/initialized properties may have setters that set the dataValue of the attribute currently being added/initialized (e.g. the setter of a "name" property that also sets the dataValue for the "slug" property, when the "slug" property is defined after the "name" property, in the model,and the bogus sanity check in place the "slug" property does not get its setters/getters defined ... thereby breaking the model!)
Merge remote-tracking branch 'upstream/master' into bugfix/getterSetterPropertyInitialization
Fixed up some specs.
Added one more test spec as well as checking for access_level in one of the specs to make sure that we're getting the right information back.
scopeObj will no longer be polluted to other instances/same instance really.
Added another spec for multiple scope instances.
Merge branch 'master' into scopes
Cleaned up the scopes code a bit, added more specs involving non existing scopes as well as a {silent} options as the last argument.
Merge branch 'master' into scopes

Conflicts:
	lib/dao-factory.js
Merged master/new smartWhere utility.
Cleaned up scopes/smartwhere, added another spec to make sure SQL is escaped, and fixed potential SQL injection problem with sqlite
Updating from the Model/DAOFactory should now go through .validate(), you can skip this by adding a third argument {validate: false}.
Added specs for the new Model.update behavior, also added even more spec tests for column id/auto increment/primary key field validating properly. Closes #220 and #799
Forgot to check for null on .validate().
Postgres will now properly create hstore columns as it should, text is not a suitable alternative. This also fixes a describeTable issue with returning the column's data type as USER-DEFINED instead of HSTORE which closes #671
You should now be able to declare false/true booleans within the where search criteria for associations. Closes #820