Improve rounding for all platforms.

Thanks Peter Szücz for this solution, which works best on all platforms.
This solution also removes the risk of something else altering the
rounding mode.
Move initialization back to implementation.

This is because we need to support MSVC which currently doesn't support
"constexpr".
Note that the reason why we can't initialize these values in the header
is that C++ only allows that to happen for integral types, which "float"
is not.
Whenever MSVC gains the ability to use "constexpr" this commit should be
reverted.
Add Erik Ogenvik as an author.
Bumped interface.

Because of the change to the "static const float" values.
Automate ChangeLog generation.

And add script for abi report generation.
Note release 0.3.3.
Add missing header.

std::max is in algorithm header.
Remove workaround.
Add assert for possible buffer overrun.

I don't know if this can happen, but better to put assert to detect it.

C6386 Buffer overrun while writing to 'np':  the writable size is 'm_size*m_size*3*4' bytes, but '16' bytes might be written.
line 213: 'this->m_normals' may be NULL (Enter this branch)
line 217: (alias) 'np' receives the value of 'this->m_normals'
line 238: Skip this loop, (assume 'i<m_res' is false)
line 255: Skip this loop, (assume 'j<m_res' is false)
line 277: Invalid write to 'np[3]', (writable range is 0 to 2)
Check for nullptr.

Based on static analyzer it can be nullptr.