AND-50: Initial steps towards synchronous endpoints. Demonstrates the ap...

...proach for GET /profiles.
with the appearance of the Procedure class, I think we could handle the case of the expired token even more robustly, and even to get rid of the logic of detecting the expired token based on the timestamp

public abstract class Procedure<Result> {
        protected abstract Result exec() throws MendeleyException;

        public Result run() throws MendeleyException {
            if (authenticationManager == null || !authenticationManager.isSignedIn()) {
                // Must call signIn first - caller error!
                throw new NotSignedInException();
            }

            try {
                 return exec();
            } catch (TokenExpiredException e) {
                 authenticationManager.refreshToken();
                 return run();
            }
    }
}

Just exec the Procedure, if the server tells is not authenticated, refresh and run it again. 
The timestamp logic can be still in place as an optimisation (prevents launching HTTP request that was know to be deemed to fail), but we ensure we will always refresh the token if we receive a token expired response.