Added HyLambdaListKeyword tokens to the lexer

The name "lambda list keyword" is a historical artifact from the CLHS
and not optimal (http://clhs.lisp.se/Body/26_glo_l.htm).

The name may change at some point.
[WIP] Added lambda list keyword parsing step

This allows us to translate lisp argument lists to Python ones.

(defun foo (x y &rest z &optional {foo 3} &aux kwargs))

translates roughly to:

def foo(x, y, *z, foo=3, **kwargs):
  pass
if: emit error on too many args

Signed-off-by: Julien Danjou <julien@danjou.info>
Add support for unary operators (not, ~)

Signed-off-by: Julien Danjou <julien@danjou.info>
cosmetic style fix
Merge branch 'jd/if' of git://github.com/jd/hy
Style fix
Merge branch 'master' of git://github.com/jd/hy
Adding in an If mangle
Check the number of arguments for each function

Signed-off-by: Julien Danjou <julien@danjou.info>
Style fixes
Add flake8 in tox

Signed-off-by: Julien Danjou <julien@danjou.info>
Fix flake8 errors in tests

Signed-off-by: Julien Danjou <julien@danjou.info>
tests: simplify not compiling tests

Signed-off-by: Julien Danjou <julien@danjou.info>
Make HySymbol bytes free!

We can know use any amount and type of bytes to build a HyString, meaning we
can use Unicode and UTF-8 for our function and variables.

Eat that, snake!

Signed-off-by: Julien Danjou <julien@danjou.info>
Remove useless code

This seems to have no purpose to me.

Signed-off-by: Julien Danjou <julien@danjou.info>
Merge branch 'jd/clean-hystring' of git://github.com/jd/hy
adding this as testable
Revert "Remove useless code"

This reverts commit 801c4e0099035bc44a70375b02017e935461daef.
Revert "Make HySymbol bytes free!"

This reverts commit 8b144a4f3dd815abbc29b2bdb18eb619ecd25ec7.