If you try to use the environments we have used so far instead of making reference to syllable structure, you will probably not come up with a nice, concise, elegant, beautiful explanation. If you look at different books, they will all have slightly different definitions of language variaties. Here's my versions, which may disagree with everyone else's. A register is variation within a person. An accent refers to pronunciation.
Dialect refers to vocabulary and grammar as well as pronunciation.
Dialects and languages are speech variations between groups of people. To a linguist, if the differences are small enough that the different groups can more or less understand one another, that is to say, if the patterns of speech are similar enough to be mutually intelligble , the speech of those two groups are different dialects. If the differences are large enough to be mutually unintelligible, the speech of those two groups are considered different languages. Realize that this is a fuzzy, and not a clear-cut, distinction between a dialect and a language. For our purposes, an argot and a jargon is the same thing, being a specialized vocabulary of various groups, often occupational or recreational.