Modified IdChangePipe to accept nested literals as ids

IdChangePipe now allows to specify a nested literal name (by separating
the entity names with dots such as "grandpa.parent.id_literal").
Additionally, a keepIdLiteral flag has been introduced to control
whether the id literal is kept in the output or not.