Support Layout and Format nodes in text and shield symbolizers

This is a potential addition, which corresponds with mapbox/carto#358. The goal is to support definition of layout and format nodes in carto, as discussed in mapbox/carto#347.

What is being added here is child element types (currently layout and format), along with their attributes, that can be defined inside of text and shield symbolizers in mapnik XML. Also added are css pseudo-elements that can be used to create and define these elements in carto. In mapnik, format and layout elements can be contained within text and shield symbolizers, and they can also be nested inside of each other. The child-elements lists are used to control which types of elements can go where.

Along with the proposed changes to carto compiler (mapbox/carto#358), this is designed to allow for expansion to other xml tags that can be defined inside of a symbolizer. In particular, a 'placement' element type could easily be added to define alternate placements for list placement mode (see #45 and mapbox/carto#238).