I know question is quite old, but the topic is still useful to several readers, so here are my answers and a circuit I built that charges a lead acid battery as you originally wished:
For example, I could attach something that would charge it, keeping it at 14.6V until the current goes down to .1A, and turn off. When this device would turn off, the charge controller would kick in, and keep it at 13.7V float stage.
General concepts
About 20 years ago, I built several 3-stage battery chargers for 12V 7Ah SLA batteries, using an LM317 and some other semiconductors.
I recommend you (and others) to use this circuit family, considering the tips and limitations I explain ahead.
Spoiler: this circuit works well, but you need to define certain ranges for the best use:
- Battery voltage: if it is 6V or 12V and more importantly
- Current limits: as Maximum current capability and Threshold current.
How flexible is a charger: it is just like using a screwdriver; there are smaller and bigger ones, you select it depending on the size of the bolt, within some common sense - and there is no magic here.
Battery information:
A known website consolidating several battery related information is the Battery University article repository.
At the end of this post, I will supplement some battery related information, to make this post more self-contained at first sight, but providing the links for further reading.
The 3-stage charging parameters from article BU-403 were summarized in the following graph:

Base circuit, with 3-stage charging
The base circuit appears in the LM350 datasheet, but LM301 OpAmp can be substituted by others easier to find, as TL081 - further ahead are comments of OpAmp selection.
This circuit makes clever use of 1.25V differential voltage between V.out and V.adj, which is the same for either LM350 and LM317. The first can deliver up to 4A (see LM350 datasheet Figure 4), while LM317 datasheet indicates on item 7.5 up to 2.2A.
See my comments how the circuit works inside the picture, allowing the readers to adapt to individual needs.

- Threshold current-detection, I.lim, to change from V.bulk to V.float is made by OpAmp that compares the voltages in the resistors marked in green. This should be the first review point.
- Absorption-voltage is the correct designation for the second stage and related components are marked in Red. Note: In the original post I had used this higher voltage limit with a shorter description as V.bulk. So, when you still read somewhere “V.bulk” (maybe more meaningful to me), please mentally translate to the “V.absn”(technically correct). Assuming R2+R3 ~= 240R, then select R1 to desired “V.absn” - or add a trimpot in series to fine tune the voltage (this is what I did).
- Float-voltage (V.float) related components are marked in blue. OpAmp puts R4 connected in parallel to R1, reducing the voltage divider that controls the LM350/LM317.
- Original OpAmp is the LM301. It can be easier replaced by TL081 (double-check pin out), as the TL V.in+ and V.in- can operate up to +Vcc (as this original design goes). Be careful to buy a real TL081, as several internet vendors sell remarked counterfeit ICs - this is even worse for TL082 (dual OpAmp with pin-out identical to LM358), but that is another chapter.
- Alternative OpAmp as LM358, the ancient LM741 and others can be used if the Vcc is rerouted to V+, before LM350. Observe to not surpass Vcc.max of the OpAmp (up to +30V is OK). This allows a Vcc of OpAmp to become higher than V.in+/- and to avoid OpAmp latch-up. This was marked with purple arrows, as a reminder.
- V.absn or V.float: Charger detects I.charge and if it is larger than I.lim, V.absn is selected, otherwise the output goes as V.float. To force V.absn on a charged battery, I didn’t use the compensation pins of LM301 (or TL081 or LM741), fading it with a yellow marker. I prefer to press the push-button with a power resistor (draining about 1A) and that’s it - inserted with blue markers.
About maximum charging current:
As a general safe guess, unless you have battery’s exact operational data, the maximum charging current should be up 15%~20% of rated capacity.
If the battery is smaller than a Car battery, or less than 20Ah, I.charger < 3~4A. In this case, a real LM350 (again, not counterfeit) might have its current limitation as too strong. So, for batteries from 7Ah to 20Ah, it would be better (cheaper and easier) to use a real LM317.
Small SLA batteries, C < 5Ah
For very small lead acid batteries as you commented, about a 2.3Ah and similar, even the current limitation provided by the LM317 (I.max = 1.5A~2.2A) is too much. To reduce the I.charge.max to something like 0.5A to 1.0A, you could adapt the following circuit (from TI’s LM317 datasheet) to the previous 3-stage one:

Larger batteries, C >> 50Ah
On the opposite case, for very large batteries, the LM350 may not provide enough current during the first charging stage. In this case, the base circuit could be adapted to provide 5A, 10A or more, using a by-pass power transistor, similar to this one:

Circuit robustness and protection:
Short circuit protection: Just keep in mind that for the current-booster circuit, it looses the ability to limit the short circuit current. If this is necessary (and I would recommend), supplement it. For instance, the remaining OpAmp from a dual OpAmp package (as TL082 or LM358) could trip a PowerDown if maximum current is reached. This could either be an auto-resettable current limit or requiring a manual reset.
Reverse polarity protection: More complicated circuitry could protect against connecting a battery with reversed polarity. If no protecting circuit exists and reverse connection happens, in “99%” of cases you will have magic-smoke!
Well, when using fuses at output and input of circuit, maybe not reaching the smoke itself, but the electronic components would be burned/damaged and you just avoid the smoking phase.
You can find protection circuits using MOSFETs to disconnect the charger form the battery, but you have design concerns as proper component selection, its voltage detection and current rating, etc.
An expedite solution, not so elegant but that works, is to use a normally open (NO) 12V relay - driven by the battery itself, to interrupt the charger-battery connection, with a diode in series with the coil, detecting the (correct) voltage of the battery. Relay’s operating current is about 100mA, as here, so it will not be an issue for any motorcycle or car battery, but could protect for any lack of attention by the user.
I confess I didn’t use these features (MOSFET or relay) in the products I made, because I had used polarized connectors to avoid reverse polarity connection. But they will become more important for general use of the charger, as when alligator clips are used.
Fuse(s): Always use a fast-blow fuse in the output as a minimum, and another one at charger’s input, to protect the power supply /transformer used for it.
A slow-fuse at primary of the transformer is also recommended, for overall safety of the transformer - in case the bridge rectifier shorts-out, for instance.
Supplements and additional information:
(1) State of charge of a lead acid battery:
Article BU-903 discusses about state of charge (SoC) for different battery chemistries. For our lead acid battery, what they call hydrometer is more widely known as a densimeter, to measure the specific gravity of the electrolyte/fluid. It is reputable as the most accurate method to know the SoC of a LA battery. When this cannot be used, as in a Sealed LA battery, measuring the open circuit voltage (after 24h of rest) is the second best method to estimate the SoC.
The next topic, temperature compensation, may improve SoC estimative when temperature of battery is too far from reference temperature (25~26°C).
Open circuit voltage and SoC are summarized here:

(2) Temperature compensation for hot/cold conditions:
When LA Battery is at temperatures significantly far from 25°C (78°F), charging voltages shall be compensated. The article BU-410 states that:
Heat is the worst enemy of batteries, including lead acid. Adding temperature compensation on a lead acid charger to adjust for temperature variations is said to prolong battery life by up to 15 percent. The recommended compensation is a 3mV drop per cell for every degree Celsius rise in temperature.

So it means that a 12V battery should have its voltage reduced by 18 mV/°C. For example, I live in Brazil and summers can be as hot as in Texas - usually T.amb ~= 35°C in summertime.
So, voltages should be reduced by ~200 mV:
V.bulk = 14.2V and V.float = 13.6V @ T.amb = 35°C.
Obs.: The same temperature coefficient of -18mV/°C for a 12V battery goes to compare voltages to estimate the SoC (previous topic).
(3) Heatsinking and input voltage range:
As these circuits are linear, the main series-pass elements as LM317 LM350 NPN-Transistor will dissipate a lot of heat. How much?
Power = (V.power.in - V.batt) x I.charging
Consulting the LM317/LM350 data sheets will show a junction to case thermal resistance of 4°C/W. It also says operating virtual junction temperature < 125°C. So, from 45C to 125C we have 80°C to work with. This gives about 20W of heat dissipation per TO220 casing.
For the LM317, working at 2A, we have an allowance of 10 V of differential.
In this case, V.power.in.LM317 < 24V (V.batt+10V).
For LM350, things get tighter: if I = 3A (manufacturer’s spec), then delta.V = 7V. On the other hand, minimum dropout at 3A is 2.5V. Considering a ripple of 10% in V.power, V.ripple is assumed to be another 2.5V. So, (V.batt+2.5+2.5) < V.power.in.LM350 < (V.batt+7) or 19V < V.power.LM350 < 22V.
To summarize, concerning heat dissipation and dropout in the regulating ICs when used alone:
For LM350 up to 3A: 19V < V.power.LM350 < 22V.
For LM317, up to 2A: 19V < V.power.LM317 < 24V.
The use of series-pass power transistor (or more, in parallel), bypasses the main current and allows the LMs to operate cooler, even with higher voltage differentials, as the driving current through the LM is less than 200 mA.
(3A) Dissipation and SOA of Transitor:
With a series-pass transistor, most dissipation will happen in this transistor stage that can dissipate much more than an LM317 or LM350.
The TIP35 has I.c < 25A, P.d < 125W, and thermal resistance R.jc = 1C/W due to its larger TO-247 casing. However, the Safe Operating Area (SOA) shows that the safest current using just one TIP35 is 6A for a delta.V = 20V; but this is just the normal operating condition, not the short circuit condition, that could go up to 30V.
In this case, the safest maximum short-circuit current per TIP35 transistor is 3A~3.5A, for a full 30V of voltage differential. This is highlighted in the SOA graph:

(3B) Power dissipation during short circuit condition:
Another concern is the Power dissipation under prolonged short circuit condition: 30V x ~3.5A = 100Watts! Even with the best heatsinks fan cooled, additional power derating might be necessary, or other protection features as foldback current limiting, micro controlled management, etc. A bimetal-based thermal cutoff switch should be used to disconnect the charging in any overheating event.
After this supplemental exercise we can see that, although a linear regulated battery charger is feasible, heat dissipation is the major issue, becoming less practical for a commercial project with currents above 2A.
That is why most battery chargers nowadays are based on switched mode power supplies.
Final notes (as 21/Jan/2022):
A linear charger up to 1.5A~2A is quite feasible, works very well and can be made by yourself (DIY). Possibly it could repurpose an unused laptop for currents up 1.5A, maybe up to 2A, as we saw above.
This would be a fun, educative and useful project to build, being able to charge all motorcycle batteries and most car batteries too (slower charging, but it does the job).