David Johnston (admiral)