feat(misc core): add ngId directive

Add a way of dynamically updating the id attribute, using either a string or an object.
Save the old id automatically in case the string or the object evaluates to falsy.