libtime: `strftime` now returns `Result<String, String>` instead of `String`.



[breaking-change]
In general the pattern for errors such as this has been `Result<T, CustomErrorEnum>` to provide more contextual information sometimes and also to be able to programmatically inspect an error result to see what happened. Could you add a custom enum for this method to return? Also be sure to implement `Show` for the enum to basically return the same `String` that's already being returned.

Also, can you update the documentation for this function to explain why the return value is a `Result`, and exactly what cases will cause it to return an `Err`?