DSL Keywords engine rewrite

mainly changed the dsl_keywords to be a hash table rather than a key/value pairs management over an AoA which was buggy as the check for existing keys simply doesn't currently work (the match that takes place is a regex against an array ref which never matches the stringified ref.), resolving this bug reveals other issues which need to be addressed later within the Plugin code, but I think this is a step forward in the right direction.