Docker image improvement

- Use official node and redis images
- One single service per Docker container
- Run ethercalc with non-root user
- Print pm2 logs to stdout

Signed-off-by: Vincent Giersch <vincent.giersch@ovh.net>
Merge pull request #130 from gierschv/docker

Docker image improvement
* 0.20141121.0.
Update ethercalc.sh
Update archive.ls
* Custom port 80, not 8000
Use relative paths when importing files.

This will make imports work with --basepath.
* Convenience csv.json export point for sheets.

  This saves the client from having to parse CSV.
Merge pull request #139 from gagern/134-import-basepath

Use relative paths when importing files.
* 0.20141208.0
Make closure compiler a variable in the Makefile.

This way, users can pass different things as the command to invoke the
closure compiler.  For example, "java -jar /path/to/compiler.jar" or
something like that.

Introduced CLOSURE_ARGS parameter so users can pass additional arguments to
the closure compiler, e.g.
CLOSURE_ARGS="-O=WHITESPACE_ONLY --formatting=PRETTY_PRINT"
to get a human-readable version of the almost unmodified input for debugging.

Got rid of unneccessary perl invocation.  We don't need --js in front of
every single file; once for the whole set is enough.  (Even if we wanted it
for every file, we still could do so without perl).

Dropped the double colon from the rule.  There appears to be no need for
such an obscure feature here.  The other double-colon rules are still in
place, though.
Avoid race condition due to yield, abandon waiting on CmdExtension.

The swapping of parseobj in ScheduleSheetCommands will interfer with the
yielding of CPU time if sci.maxtimeslice is exceeded.  This can cause
commands to get executed twice.  To avoid this, I'm now passing the parseobj
around in all function invocations, and the saveundo as well.  That way I
won't have to rely on some state which might be subject to change.

Since the ResumeFromCmdExtension only has a single argument, it doesn't fit
in with the new signatures.  As there are no calls to that function in the
whole code base, the function has been removed, along with the related
cmdextensionbusy.  If this machinery is required in some third-party setup,
then its use should be documented and preferably changed.  It might be best
if any command extension accepts a single callback as an argument and calls
that if it wants to resume operations, without having to worry about what
parameters to pass.  That way, the code invocing the extension could take
care of wrapping all required arguments in a suitable closure.
Ignore node modules and data dump.
Merge pull request #141 from gagern/140-insert-race

Avoid race condition due to yield, abandon waiting on CmdExtension
* Rebuild source after #141 from @gagern++
* Make dump.json easier to debug, and re-indent delete.
* 0.20141209.0
* Make it 0.20141209.1
Merge branch 'master' into sandstorm

Conflicts:
	db.js
	manifest.appcache
	src/db.ls
* Build 201412091 for sandstorm