Automated Kantian Ethics: A Faithful Implementation