Start sessions properly. Perform check and start at same time.

The code was checking for `session_id` and then adding an action to later start a session. In the meantime, a session could have been started.

In this PR, the check for a session and the start happen at the same time.

Also, when using `add_action` to start the session the `session_start()` function is called with parameters, which throws notices on certain PHP versions.

Hoping to get this in before v2.1. :smile: