Switch entirely to lxml

Currently we use BeautifulSoup with the lxml, making lxml a requirement. By
using solely lxml, we get rid of BeautifulSoup and make it possible to use
lxml's css selectors.