Allow shell quoting on CLI

Break up command-line args using shlex rather than string.split

This enables multiple-word tags using quotes:

mailpile> tag/add "three word tag"
mailpile> tag +"three word tag" 20
Improving internal timing code
Search optimizations, do not return full thread details unless requested
Stop initializing jinja on every request
Suppress detailed timing info unless sys.debug wants "timing"
Fix broken tag display in CLI sesarch
Make search use _success (issue #383)
Fix timing in search result message
Added support for multiple selenium tests.

- fixed problem with selenium tests in multiple files
- added test to check for reading a single mail
- fixed shutdown error in httpd.py (socket not closed)
Added gui test for mark read/unread.

- Added some test convenience methods
Fix for race condition while checking for class absence or presence.
Made jinja templates and static web assets pluggable (issue #547)
Merge pull request #551 from lieblingswelt/lj-guitest-unreadbutton

Added gui test for mark read/unread.
More work on pluggable web assets (issue #547)
Switch to URL-route style asset registration in manifest.json (issue #547)
Created JavaScript API generator
Adding JSAPI to main. Not used currently.
First iteration of Piledeck! (should live elsewhere) :D
Route plugin Javascript to /jsapi/as.js (issue #547)
More manifest reorgs, /jsapi/as.css dumps plugin CSS (issue #547)