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
Merge branch 'develop' into feature/lambda-list-keyword
WIP - Adding Call support and FuncionDef

The test is still broken, there are print statements... this is an
ongoing WIP and will get squashed before submitted the PR.
Added ast pretty printer
Merge branch 'develop' into feature/lambda-list-keyword
WIP - Move _parse_lamba_list to the functiondef
Got &rest working, tests pass

Did a little house cleaning in lex states.py too and started removing
stupid print() statements.
Making (import) a lot smarter

With these changes, the import function will become a lot smarter, and
will combine all of import, import-from and import-as in a hyly lispy
syntax:

 (import sys os whatever_else)
 (import [sys [exit argv]] [os :as real_os]
         [whatever_else [some_function :as sf]])

That is, each argument of import can be:

 - A plain symbol, which will be imported
 - A list, which will be handled specially

If the argument is a list, the first element will always be the module
name to import, the second member can be either of these:

 - A list of symbols to import
 - The ':as' keyword
 - Nothing

If it is the ':as' keyword, the third argument must be an alias. If it
is a list of symbols to import, we'll iterate through that list too. If
any symbol is followed by an ':as' keyword, we'll pick all three, and
treat the third member as an alias. If there is nothing else in the
list, we'll import the module as-is.

All this combined fixes #113.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Remove `pass' from the language.

This also fixes a bug in the pass optimize missing branch where the code is
something like: [stmt, [], stmt]; in such case we want to filter out [], so
if we end up with [] we can optimize it. This fix is needed otherwise (do)
inside (do) are not properly optimized.

Signed-off-by: Julien Danjou <julien@danjou.info>
use hy
try: add support for `finally'

This fixes #75

Signed-off-by: Julien Danjou <julien@danjou.info>
Enhance error handling

We now have a full backtrace if the compiler bugs, and if it's a user
problem we indicate him where he failed.

Signed-off-by: Julien Danjou <julien@danjou.info>
Add missing bits operator and power

Signed-off-by: Julien Danjou <julien@danjou.info>
Add AugAssign handling

Signed-off-by: Julien Danjou <julien@danjou.info>
Implements `else' for `foreach' statements

Signed-off-by: Julien Danjou <julien@danjou.info>
Merge branch 'jd/for-else' of git://github.com/jd/hy into pr-121
Merge branch 'jd/remove-pass' of git://github.com/jd/hy into pr-122
Merge branch 'f/smart-import' of git://github.com/algernon/hy into pr-113
some style fixes for @algernon