String Theory and M-Theory: A Modern Introduction