refactored utils.strftime

``utils.strftime`` was hacky. I believe this is a better implementation. This also solves the 'normalization' problem of non-ascii characters, since only formattable substrings are passed to builtin ``strftime``.

This also includes the fix proposed by #850 to issue #690. Since it's the correct approach because builtin ``strftime`` functions in Py2 will return a bytestring encoded with the encoding defined by ``LC_TIME`` ([ref](http://docs.python.org/2/library/locale.html#locale.LC_TIME)).

This PR also adds two tests for ``strftime``.