Text manager done

Features:
1. Require facebook login
2. Allow users to add or modify texts.
3. Allow users to choose from existed plugins.
4. All changes will be logged in texts_log

Other changes:
1. Use Util::timestr() instead of date() for consistent time format
2. Return array of strings instead array of objects in list_titles
3. Modified error handling in Texts::callPlugin()
4. Merge Users::getBasicData() and Groups::getUserGroups()
5. Modify layouts of index.php
6. Remove '只登出 Test_yan' from index.php because session is not
   used anymore
7. Fix a bug in db.php
8. Add ui/common.css
Fix error handling for multiple posts in post.php

Other changes:
1. Add checking php version and extension
2. Add DELETE handling in sql.php and db.php
3. Add associative access in fbBatch.php
4. Use mb_strimwidth instead of my implemention for truncating messages
5. Fixed: detecting invalid utf-8 when parsing rss
6. Add plugin 'Error' for testing error handling
7. Remove check.php. Use checksyntax.vim instead
Done Text Manager

Other changes:
1. Move checkPHP() to lib/util.php
2. Move the configuration of allowed IPs to the database, and accpet
   CIDR formats now
3. Move functions in lib/auth.php to lib/fb.php
4. Add error reporting in lib/fbBatch.php
5. Handle non-JSON response in lib/fbBatch.php
6. In FbBatch, make requests directly instead of calling FB sdk
7. Fixed error handling in lib/post.php
8. Checking if the argument is a string or not in Util::tryParseJson
9. Make all stackoverflow.com urls shorter
10. In ui/index.php, make titles in the selection area link to
    ui/text_mgr.php
11. Require login in ui/text_mgr.php now because edits are logged in the
    database