Add a keyword? function to detect keywords.

Thanks to algernon for the function body; huge improvement.
defmain macro; handles the whole if __name__ == __main__ / main function dance

Example:

  (defmain [&rest args]
    (print "now we're having a fun time!")
    (print args))

Which outputs:

  $ hy test.hy
  now we're having a fun time!
  (['test.hy'],)

Includes documentation and tests.
Add a missing versionadded directive to the lisp-if/lif documentation.
Fix a code-block in the lambda documentation.
Merge pull request #554 from berkerpeksag/fix-codeblock

Fix a code-block in the lambda documentation.
Merge pull request #553 from berkerpeksag/missing-versionadded

Add a missing versionadded directive to the lisp-if/lif documentation.
add make flow to the hacking docs
Cleanup requirements, .travis.yml and tox.ini.
Closes #573, restores 0.9.12 for loop behavior (and everyone wins!)
Adding myself as an author
Refactor for loop to use cond
Changed conf.py to use RTD theme if available
Raise exceptions when no handlers are provided.

Also small DRYing in try handling.

Previously, writing a bare (try (foo)) would invoke Pokemon
exception catching (gotta catch 'em all) instead of the correct
behavior, which is to raise the exception if no handler is provided.

Note that this is a cute feature of Hy, as a `try` with no `except`
is a syntax error.  We avoid the syntax error here because we don't
use Python's compiler, which is the only thing that can throw
Syntax Errors.  :D

Fixes #555.
document dict-comp and genexpr
document set-comp
merge #547 - keyword?
Reimplement some built-ins in terms of the standard library.

As a result:

  * functions such as `nth` should work correctly on iterators;
  * `nth` will raise `IndexError` (in a fashion consistent with `get`)
    when the index is out of bounds;
  * `take`, etc. will raise `ValueError` instead of returning
    an ambiguous value if the index is negative;
  * `map`, `zip`, `range`, `input`, `filter` work the same way (Py3k one)
    on both Python 2 and 3 (see #523 and #331).
Move the documentation for `zipwith` to the correct place.
`setv` no longer creates variables with '.' in their names

FIXES #577
Make hy2py public.