Display python version & platform at repl startup

*hy/cmdline.py: At the repl startup the Python implementation & version
 is displayed along with the platform(os) information
Make ci builds faster by splitting requirements

Make travis builds faster by splitting requirements into
requirements-travis.txt, which contains all the requirements necessary
for running tests, documentation related packages are omitted and added
as a part of requirements-dev.txt

Additionally .travis.yml is modified to cache pip downloads, though this
feature is yet to be rolled out for the free tier
Merge branch 'master' into pr/585
Merge branch 'master' into pr/599
defmacro/g! and HyObject#startswith

Currently, defmacro/g! doesn't respond well when it comes across a
HyObject that doesn't respond to the instance method startswith (e.g.
HyInteger, HyFloat, etc.). This updates defmacro/g! to be a little
safer when searching for the gensyms it needs to create.
Rephrased confusing comment
Merge pull request #603 from Duta/patch-1

Rephrased confusing comment
Minor typo

Sorry for tiny commits :P
Merge pull request #604 from Duta/master

Minor typo
docs: fix decorator to reflect multiple decorators

* docs/language/api.rst: the `with-decorator' builtin supports multiple
  decorators which it applies in order. Docs are updated to reflect this
anaphoric: fix first & last when conditions fail

* hy/contrib/anaphoric.hy: `ap-first` and `ap-last` now handle cases
  when failure happens for the predicate. Thanks to @tutorto for
  reporting this bug
Add shadow.hy to core

This new core module allows us to shadow the builtin Python operators so
they may be passed to sequence functions that expect functions:

    => (map / [1 2 3 4 5])
    [1.0, 0.5, 0.3333333333333333, 0.25]
Remove HyLambdaListKeyword from the parser

It's not a syntactic element and doesn't belong in the parser. Parsing
lambda lists is now handled by the compiler alone.
Merge branch 'master' into pr/611
Fix #607, remove return from try when there is a generator inside

Added the contains_yield attr to 'try' when the body it is
wrapping contains 'yeild'.

Should also address #600 and #563
Second part of the fix for yield inside a try-finally

As noted in #600, Python 3 allows a return inside a generator
method, that raises a StopIteration and passes the return value
inside the 'value' attr of the exception.

To allow this behaviour we simple set 'contains_yield' while compiling
'yield', thus allowing a return statement, but only for Python 3. Then
when compiling the try-except, we check for contains_yield to decide
whether there will be a return.

This allows code like:

(defn gen []
  (yield 3)
  "goodbye")

to compile in both Py2 and Py3. The return value is simply ignored in
Python 2.

hy2py in Python 2 gives:

def g():
    yield 3L
    u'goodbye'

while hy2py in Python 3 gives:

def g():
    yield 3
    return 'goodbye'

Turns out return in yield started in Python 3.3
Merge pull request #615 from rwtolbert/rwtolbert/bugfix/fix_return_in_try_with_yield

Fix #607, remove return from try when there is a generator inside
Merge pull request #601 from theanalyst/fix/ap-first

anaphoric: fix first & last when predicates fail
Fix hy2py output on Windows/Python 3

If there are Unicode symbols in the hy2py output (as in
tests/native_test/language.hy) and the user is on Windows, and
the user is using Python3 and the user doesn't have an appropriate
codepage in the terminal for Unicode, then hy2py will fail at
encoding the output.

This fix makes sure that if encoding fails, the bytes output is shown
instead of throwing an exception and failing completely.  This also
allows the hy2py tests to pass on Windows.

If the user does activate an appropriate codepage, for example,

chcp 65001

then the Unicode output will show correctly.

Converted printing code to small function to eliminate some duplicate code
Merge pull request #602 from agentultra/shadow-builtins

Add shadow.hy to core