1.)
On the backend (servelet/JSP) you can check if the the user is authenticated and if he is you can render it as a javascript variable (var user={'name':'John','role':'ADMIN'} in your html/jsp host page.
Then in your GWT client app you can read this variable. This way you don't need any backend call to check if the user is logged in and it works no matter which URL he navigates to (because the host page is loaded every time the user refreshes his browser).
You can store the Userinfo in a global singleton and access it from your presenters to check it.
You don't need to manually transmit anything from the GWT client when you use server side sessions, because that is done for you. You only have to check on the backend if the user session is still valid.
3.) It's an anti-pattern for restful services to deploy server side session. However if you don't care too much about violating this principle you can still use server side sessions like in traditional web applications.
Usually with restful services you have to transmit a secure token or the user credentials in every single backend call. You can also use OAuth.