When no arguments are passed, print usage.
Now code works on both Python 3 and Python 2
Fix unicode issues

Python 2 needs the unicode constructor in csv formatting.  Python 3 does
not have the unicode constructor anymore.  This commit adds a 'fake'
unicode constructor in Python 3 to ensure compatibility across python
versions.

Also, an encode function is provided, in Python 2, it calls encode('utf-8')
whereas, in Python 3, it directly returns the string.
Update to BeautifulSoup 4 + fix parser for bs4

In bs4, tag.get('class') is a list of classes. This commit fixes
the parser accordingly.
Support both BS4 and BeautifulSoup

BS4 and BeautifulSoup differ in the way the class attribute is defined.
In BS4, tag.class is a list of classes whereas in BeautifulSoup
tag.class is a string.

This commit abstract the class checker to support any of the two
versions.
Merge branch 'for-upstream' of https://github.com/pablooliveira/scholar.py into pablooliveira-for-upstream
Mergin pull request from Pablo Oliveira for Python 3 and BeautifulSoup 4
support (thanks!). Also a bunch of code cleanups and pylinting.