Add support for optional table attributes to CI_DB_forge::create_table()

Supersedes PRs #989, #2776
Related issue: #41
SQLSRV improvements

Mainly for performance (issue #2474), but also added a 'scrollable' configuration flag
and auto-detection for SQLSRV_CURSOR_CLIENT_BUFFERED (only available since SQLSRV 3).
Merge branch 'feature/dbforge_table_attributes' into develop
Add <button> to the list of 'naugthy' html elements in CI_Security::xss_clean()
CI_Security::_decode_entity() to replace dangerous HTML5 entities

Related to issue #2771
Fix #2836
[ci skip] AND -> &&
Righting a wrong in the Session library

 - Change userdata(), flashdata(), tempdata() to return all the respective data when no parameter is passed.
 - Revert the addition of all_flashdata().
 - Deprecate all_userdata().
 - Fix related changelog entries that were all inconsistent.
Add &newline; and &tab; to CI_Security::
CI_Security: Add 'form' and 'xlink:href' to evil attributes
Fix syntax errors
CI_Security: Add <select> and <keygen> tags to the list of 'naughty' HTML elements
CI_Security: Also add <svg> to 'naughty' HTML elements
[ci skip] Add a link to PHP bug 54709 in is_really_writable()'s docblock
Partially fix #2667
Re-add 'on\w*' to evil attributes (rel #2667)
Fix CI_Security::_remove_evil_attributes() being way too aggressive
Previous commit caused side effects ...
Add <math> to 'naughty' HTML elements
update