Fix handling of due dates

This was broken due to commit fc02c46eea9d9e7cc472a7fc1801ea65d467db76.

This commit added stripping of null bytes, but did not correctly handle null values
Fix: #0017382: install.php: do not send the value of crypto_master_salt over http
typo fix
add missing ;
Timeline feature preview
Move Timeline styles to default.css.
Move strings to lang files and use lang_get().
Move timeline api to core/timeline_api.php.
Remove todo from timeline_inc.php.
Add bug_history date modified index.
Added user date_created index for user creation events.
Check that a plugin is loaded when accessing its pages

A plugin can be registered yet fail to load for example due to unmet
dependencies.

Fixes #17359
Whitespace
plugin.php: replace DIRECTORY_SEPARATOR by '/'
Move plugin upgrade needed check before loaded check

Ensures we capture display appropriate error message to the user. Before
that, they would get the 'not loaded, dependencies not met' message
instead of the 'upgrade needed' one.
Add plugin basename to error messages

Helps users identifying what plugin is having issues.

Fixes #17368
More plugin error messages improvements

- ERROR_PLUGIN_PAGE_NOT_FOUND: Add plugin basename and page name
- ERROR_PLUGIN_FILE_NOT_FOUND: new message based on above
- New specific messages for invalid page and file specification
  (ERROR_PLUGIN_INVALID_PAGE and ERROR_PLUGIN_INVALID_FILE) instead of
  using ERROR_GENERIC

Fixes #17368
Plugin API: consistent handling of MantisCore pseudo-plugin

- return true and not 1 if we declare return type to be boolean
- plugin_is_installed() returns true for MantisCore since by definition
  it is always installed
Remove direct access to $g_plugin_cache global variable

Introduces 2 new API functions
- plugin_is_registered()
- plugin_get()

Fixes #17366
Code cleanup and whitespace

- Use Closure instead of defining a function to sort plugins
- Remove unnecessary variable assignments