Issue #959: Configurable location for writable directory
- Use new config.inc.php $THINKUP_CFG["datadir_path"] value, defaults to 'data' under the thinkup root
- Directories moved under 'data': 'compiled_view', 'cache', 'logs'
- Added helper functions:
-- Utils::getDataPath($str) - absolute path to data - if $str given, data/$str
-- Utils::getBackupPath($str) - data/backup/$str
-- Plugin->getDataPath($str) - data/plugins/$plugin_folder_name/$str
Make writable directory location configurable, closes #959
* Created new FileDataManager class, moved data directory-specific Utils functions into it
* When config.inc.php datadir_path value doesn't exist, default to source_root_path/data/
* Avoid "Can't write to file" data folder permissions problems during export and backup
* Gracefully handle missing config file during installation, and missing datadir_path value in existing config
* Automatically create compiled_view folder if it doesn't already exist
* Expand and clarify documentation
Refactored Loader class
Documentation: switch to Bootstrap theme, update copyright year
Update docs/source/_templates/bootstrap/relations.html
Docs Bootstrap theme: Buttonize prev and next links
Issue #505: Enable app title customization
* Add app_title_prefix to config file, render app name as $prefix."ThinkUp"
* Make all page titles and email notifications reference full app title name
* Add tests and documentation
Closes #505, closes #1184
Clean up default data directory and flesh out README
* Removed compiled_view folder and its README; ThinkUp will create it as needed
Fix working directory & table prefix assumptions in tests
- Make paths to init.tests.php relative to __FILE__ so they don't make
  assumptions about the working directory
- Fix tests that assume the prefix is tu_
- Fix a few places that assume a trailing slash after directories
- Restore the configuration file if it's moved out of the way during
  testing and an exception occurs before it's moved back
- Minor updates to tests/README.md
- Remove /tests from THINKUP_BASE_URL
THINKUP_BASE_URL was set to /tests when tests were run from the root
directory.

Make sure there's a slash between root dir and tests/view

Accept "Access Denied" as a correct failure on bad database

When trying to install to a bad database name, the test assumed that
access would be granted, and an "Unknown database" error would result.
If access is denied, accept that as a correct failure as well.

Use loopback for testing bad database host

When using a "helpful" DNS resolver that returns an IP address for
unresolvable hosts (see e.g. http://dns-opt-out.comcast.net/), using an
unresolvable hostname like "localcheese" causes the test to hang while
attempting to connect to port 3306 on an IP address that's dropping
packets.

Instead, we try to connect to a loopback address, 127.0.0.2, which
(hopefully) isn't accessible so the connection is refused immediately.

Fix case of MySQL in class names

More fixes for working directory & table prefix assumptions in tests

- Make paths relative to __FILE__ so they don't make assumptions about the
  working directory
- Fix tests that assume the prefix is tu_
- Fix a few places that assume a trailing slash after directories

Fix for non-standard prefix that contains "tu_"

Use #prefix# in query passed to newMigrationFiles

Closes #187, closes #1089
Streamline path constant usage & consolidate app URL construction
* Removed THINKUP_BASE_URL & replaced with either $THINKUP_CFG['site_root_path'] or when the config doesn't exist (like in installer) Utils::getSiteRootPathFromFileSystem
* Corrected incorrect uses of THINKUP_ROOT_PATH (where THINKUP_WEBAPP_PATH should have been used instead)
* Moved Utils::defineConstants to Loader::definePathConstants
* Added Utils::getApplicationURL() to consolidate all the places where the app built the URL and checked for https, server name, etc
Documentation: New FAQs and Bootstrap CSS tweaks
Merge pull request #1118 from cwarden/extract-mentions-while-crawling

Extract mentions while crawling
Loader: Add ability to search custom paths for extlib classes
BaseFacebook class name doesn't work for facebook plugin.
changed to Facebook.
Merge pull request #1231 from sorcery/master

Facebook Plugin not Working
Fix escaped HTML in info messages
Fix missing argument for ConsumerUserStream test failures
Fixed typo
Rename Deadbeats Quietest
Facebook plugin bugfix: Avoid PHP Notice Undefined property: stdClass::$data
Closes #1218