Make conj assoc dissoc and transient versions handle args similarly

Description

Examples that work as expected:

Examples that do not work as desired, but are changed by the proposed patch:

I looked through the rest of the code for similar cases, and found that there were some other differences between them in how different numbers of arguments were handled, such as:

+ conj handles an arbitrary number of arguments, but conj! does not.
+ assoc checks for a final key with no value specified (CLJ-1052), but assoc! did not.

History/discussion: A discussion came up in the Clojure Google group about conj giving an error when taking only a coll as an argument, as opposed to disj which works for this case:

https://groups.google.com/forum/?fromgroups=#!topic/clojure/Z9mFxsTYTqQ

Screened by: Alex Miller

Environment

None

Status

Assignee

Alex Miller

Reporter

Andy Fingerhut

Approval

Triaged

Patch

Code and Test

Affects versions

Priority

Minor
Configure