Fix a bug in Google image search
Error handling and keyboard shortcuts

Details:
1. Add keyboard shortcuts for buttons in alternate.php
2. Add generic exception handling to the initialization stage of post.php
3. Stringified plugin error instead of return objects directly
4. Check whether a plugin class inherits PluginBase or not
Make text editing logs public

And fix a bug: plugins must return a string as $err['message']
Add timestr() in lib/util.js for ui/alternate.php

Purpose: to have a unified time representation in error messages

Other changes: fix a bug: removing trailing \n in error messages
TextServer the very first

Features: sentences can be retrieved from POST requests
Remove shortcuts in alternate.php
Stop developing textServer

MySQL has query cache, so repeatedly running the same query does not
make disk usage high. (type SHOW STATUS in MySQL console) Instead,
use MySQL-side JSON parsing to reduce network traffic.

Other changes: remove the timeout setting in post2() of alternate.php.
curl should have handled time limit issues.