Fix datetime comparison in relative datetime functions.
Closes #2987,#3514
Allow readFile() in CakeEmail to be accessed publicly

I needed this method while building a Transport, and saw no reason why it needed to be protected.
Create method readAndBase64Encode() in File utility.

Move this utility method out of CakeEmail, which allows other Mail transports to encode files manually. Maintains BC.
Make readBase64 an instance method

Leverage the existing code in File::read() and simply add in chunking and base64 encoding.
Add to docblock the reason why the output is chunk_split
Update link url to revised method name
Change variable name to be descriptive
Fix incorrect exception type when double slash paths are used.

Fixes #3838
make HtmlHelper::tag() just return the $text content with no wrapping tag when $name === false
Remove readBase64() from File utility, since it is not commonly used.
Merge pull request #1284 from jmillerdesign/public-cakeemail-readfile

Utilize File utility to base64 encode email attachments
changed HtmlHelper::tag() just return $text when empty($name)
Processing was simplified when a length of one line was smaller than CakeEmail::LINE_LENGTH_MUST
Tidy up variable names.

Variables with _ in them are confusing, try to use clearer names.
Add mocked components to the enable list of components.

Mocked components should be enabled so they receive callbacks. This
allows more realistic integration tests using testAction(). Stop
disabling the constructor as it causes a number of errors with
components that use components.

Fixes #3842
Merge pull request #1293 from kunit/2.3-cakeemail-wrap

Processing was simplified when a length of one line was smaller than CakeEmail::LINE_LENGTH_MUST
Merge pull request #1292 from openam/HtmlHelper

make HtmlHelper::tag() just return the $text content with no wrapping tag when $name === false
Allow setting different type on scriptBlock
Allow setting different type on scriptStart + scriptEnd
Update return types.