Semantic Robot Programming For Taskable Goal-Directed Manipulation