DXML-21: Rename deftests so they all have unique names

to avoid some tests being ignored completely.

Signed-off-by: Ryan Senior <ryan.senior@puppetlabs.com>
Remove duplicate test-indent, collapsed defaults and defaults-2 tests
into one
Fixed the indentation tests for JDK 1.8
Add CONTRIBUTING.md
remove unnecessary snapshot repo from pom - this is added by the sonatype super poms in a profile when needed
[maven-release-plugin] prepare release data.xml-0.0.8
[maven-release-plugin] prepare for next development iteration
Updated latest version
Prevent XXE attacks by disabling external entities resolution in the default parser

Signed-off-by: Ryan Senior <ryan.senior@puppetlabs.com>
Enable basic raw-xml roundtripping

This is a combination of 3 commits.

- Fix failing test
- Also emit xml from plain clojure maps
- Make namespaced xml documents roundtrippable
Refactor data.xml, parse QNames

This draws some new lines between what is considered public, by moving
lots of functionality into sub namespaces, leving clojure.data.xml as an
explicit API namespace.

This patch develops the idea of using java QNames for
resolved (context-free and unambigous) representation of xml names. This
patch also makes a (misguided) attempts to allow mixed emitting of raw
and resolved xml.

There are experiments with tree walkers to transform namespaced xml
without an emitter/parser combo in between.

This is a combination of 21 commits.

- Make it possible to emit xml-names qualified by uri with auto-prefixing
- Add helper functions and macros for namespaced xml
  - resolve-name: generate xml-names based on a namespace environment
  - with-xmlns: write prefixed keywords to get xml-names in a lexical context
  - walk-resolve-names: walk an xml tree and replace keywords with xml-names
  - walk-cleanup-prefixes: remove redundant prefixes (multiple bound to same uri)
- More namespace support and refactoring:
  There is now a data model for the namespace context, which is used by tree walkers to
  keep track of namespace prefixes. That job is done by XmlStreamReader/Writer during parse/emit.
- #xml/name reader tag
- Add an option to walk-resolve-names: env-metadata (default true), that removes xmlns attributes.
- Implement EventGeneration protocol on APersistentMap instead of
  IPersistentMap, so that (e.g. CData) records won't accidentally use it.
- Definline data constructors
- Leiningen dev aid: add project.clj and data_readers.clj
Split resolved and non-resolved parsing

This introduces separate sets of emitter / parser functions and macros,
for raw xml and resolved xml:

- parse{-str}-raw .. the original parse, that parses into prefixed keywords
- parse{-str}* .. resolved parse, that can emit QNames or keywords as
    per passed namespace
- parse{-str} macro .. calls parse{-str}* with current namespace
- emit{-str}-raw .. the original emit, that emits a prefix, if present,
    and xmlns attributes as xml namespaces. Ignores URIs, that might be
    set on QName.
- emit{-str} .. Emits prefixes based on the URI on QName or as
    determined from defns clauses.

A new model of representing namespaced xml with keywords is introduced:
defns clauses, that tie in to clojure's namespace model:

- defns macro .. defines an xml prefix in the current clojure ns
- alias-ns macro .. introduce (clj ns) aliases to (possibly not
  previously existing) namespaces. This is used to allow
  e.g. (alias-ns dav webdav.xml)
       ::dav/props ;; => :webdav.xml/props

       (in-ns 'webdav.xml)
       (defns "DAV:")

       (emit {:tag :webdav.xml/props}) ;; => <D:props xmlns:D="DAV:" />

There are some other bugfixes squashed into this commit

- Add direct constructor for element with metadata
- Define print-method and print-dup
- Parse xml names without uri as plain keywords (most attributes)
- remove walk-namespace, as this is not baked yet
Merge upstream

* origin-master:
  Prevent XXE attacks by disabling external entities resolution in the default parser
  Updated latest version
  [maven-release-plugin] prepare for next development iteration
  [maven-release-plugin] prepare release data.xml-0.0.8
  remove unnecessary snapshot repo from pom - this is added by the sonatype super poms in a profile when needed
  Add CONTRIBUTING.md
  Fixed the indentation tests for JDK 1.8
  Remove duplicate test-indent, collapsed defaults and defaults-2 tests into one
  DXML-21: Rename deftests so they all have unique names

Conflicts:
	src/main/clojure/clojure/data/xml.clj
	src/test/clojure/clojure/data/xml/test_emit.clj
Also parse tags as keywords, when they have no URI

Fix failing test