Fixed some unicode errors in python2

# What

Fixed UnicodeEncodeError when compiler is reporting
HyMacroExpansionError with macro containing unicode.

Added decoding of command line arguments passed with "-c" to fix
UnicodeDecodeError caused by args containing unicode.

# Why

## Macroexpansion error reporting error
### Expected:
    $  ./hy
    hy 0.10.1 using CPython(default) 3.3.5 on Linux
    => (defmacro bug❤ (x)
    ...   (throw Exception))
    => 
    => (bug❤ foo)
      File "<input>", line 1, column 1
    
      (bug❤ foo)
      ^--------^
    HyMacroExpansionError: expanding `bug❤': Exception()


### Got:
    $ ./hy
    hy 0.10.1 using CPython(default) 2.7.7 on Linux
    => (defmacro bug❤ (x)
    ...   (throw Exception))
    => 
    => (bug❤ foo)
    Traceback (most recent call last):
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 2211, in hy_compile
        result = compiler.compile(tree)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 420, in compile
        ret = self.compile_atom(_type, tree)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 412, in compile_atom
        ret = _compile_table[atom_type](self, atom)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 564, in compile_raw_list
        ret = self._compile_branch(entries)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 451, in _compile_branch
        return _branch(self.compile(expr) for expr in exprs)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 305, in _branch
        results = list(results)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 451, in <genexpr>
        return _branch(self.compile(expr) for expr in exprs)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 432, in compile
        raise_empty(HyCompileError, e, sys.exc_info()[2])
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/_compat.py", line 60, in raise_empty
        raise t(*args)
    HyCompileError: Internal Compiler Bug 😱
    ⤷ UnicodeEncodeError: 'ascii' codec can't encode character u'\u2764' in position 3: ordinal not in range(128)
    Compilation traceback:
    File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 420, in compile
        ret = self.compile_atom(_type, tree)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 412, in compile_atom
        ret = _compile_table[atom_type](self, atom)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/compiler.py", line 1724, in compile_expression
        expression = macroexpand(expression, self.module_name)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/macros.py", line 174, in macroexpand
        tree = macroexpand_1(tree, module_name)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/macros.py", line 203, in macroexpand_1
        msg = "expanding `" + str(tree[0]) + "': " + repr(e)
    => 

## Command line args error

    $ ./hy -c '(defn bug❤ (x) 0)' # all unicode stuff is borked
    Traceback (most recent call last):
      File "./hy", line 9, in <module>
        load_entry_point('hy==0.10.1', 'console_scripts', 'hy')()
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/cmdline.py", line 334, in hy_main
        sys.exit(cmdline_handler("hy", sys.argv))
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/cmdline.py", line 304, in cmdline_handler
        return run_command(options.command)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/cmdline.py", line 180, in run_command
        import_buffer_to_module("__main__", source)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/importer.py", line 89, in import_buffer_to_module
        _ast = import_buffer_to_ast(buf, module_name)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/importer.py", line 58, in import_buffer_to_ast
        return hy_compile(import_buffer_to_hst(buf), module_name)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/importer.py", line 47, in import_buffer_to_hst
        return tokenize(buf + "\n")
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/lex/__init__.py", line 33, in tokenize
        return parser.parse(lexer.lex(buf))
      File "/home/user/.local/lib64/python2.7/site-packages/rply/parser.py", line 22, in parse
        current_state = self._reduce_production(t, symstack, statestack, state)
      File "/home/user/.local/lib64/python2.7/site-packages/rply/parser.py", line 76, in _reduce_production
        value = p.func(targ)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/lex/parser.py", line 52, in wrapped
        ret = fun(p)
      File "/home/user/.local/lib64/python2.7/site-packages/hy-0.10.1-py2.7.egg/hy/lex/parser.py", line 287, in t_identifier
        return HySymbol(obj)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3: ordinal not in range(128)
About
```python
def __str__(self):
    return self.__unicode__().encode('utf-8')
```
This will work in python2 and break python3.
I've found this in your links http://python-future.org/compatible_idioms.html#custom-str-methods

```python
from future.utils import python_2_unicode_compatible

@python_2_unicode_compatible
class MyClass(object):
    def __str__(self):
        return u'Unicode string: \u5b54\u5b50'
```

This looks like more clean way to do it. Should we add dependency or just copy-paste this decorator?

```python
def python_2_unicode_compatible(klass):
    """
    A decorator that defines __unicode__ and __str__ methods under Python 2.
    Under Python 3 it does nothing.

    To support Python 2 and 3 with a single code base, define a __str__ method
    returning text and apply this decorator to the class.
    """
    if not PY3:
        klass.__unicode__ = klass.__str__
        klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
    return klass
```
`future` module is MIT licensed... and I can't find any other use for it now.