Few Changes

1. Add trailingslashit to plugin_directory 
2. Allow templates directory to be set by child class
3. Fixed double foreach break within locate_template. I ran into an instance where it was grabbing the generic template over the specific template due to possible names.