Issue 43 make sort(reverse=True) work

There were two possible approaches to making key=value parameters
work and I took what I saw as the safe impact with the most limited impact.

I also tried code in function.js that automatically added the
co_varnames to all functions defined using Sk.builtin.func as follows:

  if ( code )
 {
     funStr = code.toString();
     parms= funStr.slice(funStr.indexOf('(')+1, funStr.indexOf(')')).match(/([^\s,]+)/g);
     if ( parms.length > 0 )
     {
         this.func_code['co_varnames']=parms;
     }
 }

This code worked for sort(reverse=True), but lots of code started to fail in
the unit tests having to do with parameter passing and Python defined functions.
It would be good in the above code to only trigger on native JS library functions.
Issue 45: Implement the regular expression library

Add initial support for the regular expression library.

This implements findall(), search(), and match()

The most complete implementation is findall() which is only limited
by the incompatibiliies between the JS regexp and Python regexp.
The bggest problem is the different interpretation of () in the
JS regexp.  Patterns like:

"From .*@(\\S*)"

Return the whole match instead of the piece inside the parenthesis.

search() and match() are barely there.   They properly return None
if there is no match and return a MatchObject when there is a hit.
but the returned MatchObject is useless (i.e. no data and no methods).
Merge branch 'master' of github.com:csev/skulpt into csev-master