Improve implementation of --help

Implement --help as a normal option.

Automatically run help only when there are no arguments, no known
options, and there should be at least one argument.

Count the maximum number of arguments, so we can tell when it has been
exceeded (if we’re being strict).

When we give help because of a syntax error, exit with error code.
Take advantage of improved argument counting and help message by commander
Fix some comments and one minor code infelicity
Merge pull request #174 from rrthomas/master

Improve command-line handling
Changes that lead to the development of the new CPS formulae engine
Add getters "len" and "rad" for CPS enhancement experiments

Also whitespace got auto-corrected

Also the FIXME comment for the new properties is important:

We should have proper whitelisting facilities in CPS
to overcome 'accidential' access to properties that weren't meant
to be used in CPS. Also, this could add a re-mapping of names
to getter methods (or getters). This would make the namespace
less crowded and allow a better names for he CPS user!

a comment typo and whitespace

add operators "polar" and "deg"

This is the experimental beginning of an CPS enhancement that will let us
describe point positions as a distance plus an angle. This is an important part
to make our pen model more complete.

algebra with numbers in CompoundVector context, deg operator is now before its argument

also:
added some missing semicolons
a better error message, indicating the used operator by its literal name

for now and experimental removal of the implicit intrinsic value in compound vectors

whitespace and a typo in a comment

add some facilities to process Vector data types

This is a preparation to unify the code of CompundReal and CompoundVector
in the end. This means there is code duplication from CompoundVector and
this is intentional but temporary.

Change inDir(Intrinsic) and outDir(Intrinsic) to be given as radian (instead of a vector

This will help to keep the right directions when transforming the skeleton.

Also, some automatical whitespace conversions happend.

add parameters 'onLength' and 'onDir' to enable more pen control

use onLength and onDir to construct the offset of left and right on curve points from center

Also use the inverse of onDir of right to specify onDir of left
and use onLength of right directly for onLength of left

import right.onLength and right.onDir

default setup of onDir and onLength of point>left

add a simple scale operator to compound vector

delay querying some values unless the tensions have been verified

copy and pasted the subtract command of compoundVectorFactory

Added index command to access numeric properties

Currently used to access x at 0 and y at 1 of a vector, which makes
some actions in cps possible.

This is a quick and dirty implementation, it will be replaced by a
rewrite of the compound*CPSFactory classes
A new parser for CPS parameter values

add new Errors: Deprecated and CPSFormula

The new parser will clean up a lot of the mess the old
CompoundReal/CompoundVector/AtDictionaryRule system produces
by replacing most of the code by one unified implementation.

Many new and interesting possibilites will be created by
having the same syntax and methods available in all these
different places. I.e. creating custom calculations in
@dictionary rules and acessing the results from somwhere else.

Also, this will eventually enable very powerful ways of
adhoc experimentation and resolve all of the  issues under
"Refactoring" in the August/September Roadmap.

fixed missing semicolons and syntax errors

add a simple getValue implementation

parse literal as number, add a simple getValue implementation

add splitting parameter, used by the tokenizer. add getAPI as argument of execute

parse literal as SelectorList\n Note: get vakue should probably return a MOM element, rather than a selector

fix syntax/jshint complains, add toString implementation

add simple getValue implementation

add interface hint for 'getValue'

inject getAPI into call to operator execute, jsinht fixes

add missing apis, bug and jshint fixes
Implementing Operators
inital parser engine setup with stubs for operators

add CPSKeyNotFound error

add 'getComputedStyle' to  MOM _Node and getComputedStyleFor to MOM Multivers
 also auto whitespace cleaning happend

methods to regulate how CPS can get values from JavaScript

argument type matching for operators and dispatching the execute call to the matching implementation

more realistic operator implementations

revert to old version
Renew StyleDict and ReferenceDict

complete overhaul of ReferenceDict for the new CPS formulaEngine

null, undefined, false are allowed to indicate a key is NOT whitelisted, fix some bugs found in the initial commit

automatic whitespace cleaning

enhanced a docstring

complete overhaul of StyleDict for the new formulae system

whitespace changes
collected improvements

use the colon intead of a dot as getter operator, gonzales fails when using dots
use the getAPI when NameTokens should not be resolved before the operator is invoked
create a simple _print operator
use engine.setNegateOperator

Add a way to specify a `negate` operator.
Make numbers being splitting tokens, so 3 -123 is parsed as `3|-123` instead of `3 subtract 123`

read the comments in the source for a discussion

add an optional finalize method as constructor argument, make better error messages

add a finalize method to be run after execution by Stack

bugfixes, documenting comments, an internal object for argument processing

use the new factories for CPSReal and CPSVector

add new CPS datatype modules for CPS Dictionary, Vector and Real Types
Integration and tests
remove now obsolete modules

use the new factory of CPSDictionaryEntry, also auto corrected whitespace

add a cps_whitelist and an 'index' getter for the index of the node in parent.children

cps_whitelist for PenStrokePoint and its SkeletonData, the latter is a constructor now

add a cps_whitelist for Vector

use the SkeletonDataConstructor provided by PenStrokePoint, also: auto whitespace

there is no explicit 'value' getter anymore

all registered parameters are now of type 'vector' or 'real'

use new CPS code because of changed names for Constructors, added some default Values

use metapolator/errors as location for the error module

fix syntax bug/forgotten curly brackets

Use the new formulaEngine

Note: one test case had to be adapted to work with the new engine;
However the old behavior seems favorable. There is a comment in the
test code, too.

changed names

rename the test module to match the path of the lib module being tested

remove wrong comma

remove unused dependency ufojs

setting default values for out-/inDirIntrinsic

intern configuration for require with fixed paths
implement peer review results

import ufojs/main as ufoJSUtils in every occasion

improve language

remove obsolete comment

allow infinite numbers, also updated error message

remove the try…catch and leave a comment

multiplied precedence values by ten to ease inserting new precedences between existing ones. Note: decimals would work in that case too

remove unnecessary optimization, the complier should do this

remove caching in StyleDict and ReferenceDict
recursion detection for CPS in StyleDict plus a simple test
Add ES6 direct proxies to metapolator

This includes the harmony-reflect shim that patches Proxy from the
older version of the draft to the newer one (in V8)

a dummy module es6/Proxy to show our dependencies

the setup for require js in various places

a small test case to see it work

MISSING: we need to invoke nodejs with --harmony
Implement ES6 Proxy bases whitelists to read from js objects in CPS
bugfix: hasOwnProperty instead of 'in'
use a new hash bang line to start node in a portable fashion with the --harmony flag